Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
készítette: Mike Wasson
Ebben az oktatóanyagban a ASP.NET Webes API használatával fog létrehozni egy webes API-t, amely a termékek listáját adja vissza.
A HTTP nem csak a weblapok kiszolgálására szolgál. A HTTP emellett hatékony platform a szolgáltatások és adatok közzétételére szolgáló API-k létrehozásához. A HTTP egyszerű, rugalmas és mindenütt jelen van. Szinte minden olyan platform, amelyről gondolhat, RENDELKEZik HTTP-kódtárval, így a HTTP-szolgáltatások számos ügyfélhez juthatnak el, beleértve a böngészőket, a mobileszközöket és a hagyományos asztali alkalmazásokat.
ASP.NET Web API a .NET-keretrendszeren alapuló webes API-k létrehozásának keretrendszere.
Az oktatóanyagban használt szoftververziók
- Visual Studio 2017
- Web API 2
Az oktatóanyag újabb verziójáért tekintse meg a webes API létrehozása a ASP.NET Core és a Visual Studio for Windows használatával című témakört.
Webes API-projekt létrehozása
Ebben az oktatóanyagban a ASP.NET Webes API használatával fog létrehozni egy webes API-t, amely a termékek listáját adja vissza. Az előtér-weblap jQuery használatával jeleníti meg az eredményeket.
Indítsa el a Visual Studiót, és válassza az Új projekt lehetőséget a kezdőlapon . Vagy a Fájl menüben válassza az Új , majd a Project lehetőséget.
A Sablonok panelen válassza a Telepített sablonok lehetőséget, és bontsa ki a Visual C# csomópontot. A Visual C# alatt válassza a Web lehetőséget. A projektsablonok listájában válassza ASP.NET webalkalmazást. Nevezze el a projektet "ProductsApp" néven, és kattintson az OK gombra.
Az Új ASP.NET Projekt párbeszédpanelen válassza az Üres sablont. A "Mappák és alapvető hivatkozások hozzáadása" területen ellenőrizze a Webes API-t. Kattintson az OK gombra.
Megjegyzés:
Webes API-projektet a "Web API" sablonnal is létrehozhat. A webes API-sablon ASP.NET MVC használatával biztosít API-súgólapokat. Azért használom az Üres sablont ehhez az oktatóanyaghoz, mert MVC nélkül szeretném megjeleníteni a webes API-t. A webes API használatához általában nem kell tudnia ASP.NET MVC-t.
Modell hozzáadása
A modell egy objektum, amely az alkalmazásban lévő adatokat jelöli. ASP.NET Web API automatikusan szerializálhatja a modellt JSON-, XML- vagy egyéb formátumba, majd a szerializált adatokat a HTTP-válaszüzenet törzsébe írhatja. Amíg az ügyfél be tudja olvasni a szerializálási formátumot, deszerializálhatja az objektumot. A legtöbb ügyfél xml- vagy JSON-elemzést végezhet. Ezenkívül az ügyfél a HTTP-kérés üzenetében az Elfogadás fejléc beállításával jelezheti, hogy milyen formátumot szeretne.
Először is hozzunk létre egy egyszerű modellt, amely egy terméket jelöl.
Ha a Megoldáskezelő még nem látható, kattintson a Nézet menüre, és válassza a Megoldáskezelő lehetőséget. A Megoldáskezelőben kattintson a jobb gombbal a Modellek mappára. A helyi menüben válassza a Hozzáadás , majd az Osztály lehetőséget.
Nevezze el a "Product" osztályt. Adja hozzá a következő tulajdonságokat az Product osztályhoz.
namespace ProductsApp.Models
{
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
public string Category { get; set; }
public decimal Price { get; set; }
}
}
Vezérlő hozzáadása
A Web API-ban a vezérlő olyan objektum, amely HTTP-kéréseket kezel. Hozzáadunk egy vezérlőt, amely egy terméklistát vagy egy azonosító által megadott terméket tud visszaadni.
Megjegyzés:
Ha ASP.NET MVC-t használt, már ismeri a vezérlőket. A webes API-vezérlők hasonlóak az MVC-vezérlőkhöz, de a Vezérlő osztály helyett az ApiController osztályt öröklik.
A Megoldáskezelőben kattintson a jobb gombbal a Vezérlők mappára. Válassza a Hozzáadás , majd a Vezérlő lehetőséget.
Az Állványzat hozzáadása párbeszédpanelen válassza a Webes API-vezérlő – Üres lehetőséget. Kattintson a Hozzáadás gombra.
A Vezérlő hozzáadása párbeszédpanelen nevezze el a "ProductsController" vezérlőt. Kattintson a Hozzáadás gombra.
Az állványzat létrehoz egy ProductsController.cs nevű fájlt a Controllers mappában.
Képernyőkép a megoldáskezelő menüopcióiról, amely körülhúzza az újonnan létrehozott "termékvezérlő.cs" nevű opciót a vezérlők mappában.
Megjegyzés:
Nem kell a vezérlőket egy Vezérlők nevű mappába helyeznie. A mappanév egyszerűen rendszerezheti a forrásfájlokat.
Ha ez a fájl még nincs megnyitva, kattintson duplán a fájlra a megnyitásához. Cserélje le a fájlban lévő kódot a következőre:
using ProductsApp.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Web.Http;
namespace ProductsApp.Controllers
{
public class ProductsController : ApiController
{
Product[] products = new Product[]
{
new Product { Id = 1, Name = "Tomato Soup", Category = "Groceries", Price = 1 },
new Product { Id = 2, Name = "Yo-yo", Category = "Toys", Price = 3.75M },
new Product { Id = 3, Name = "Hammer", Category = "Hardware", Price = 16.99M }
};
public IEnumerable<Product> GetAllProducts()
{
return products;
}
public IHttpActionResult GetProduct(int id)
{
var product = products.FirstOrDefault((p) => p.Id == id);
if (product == null)
{
return NotFound();
}
return Ok(product);
}
}
}
A példa egyszerűségéhez a termékek egy rögzített tömbben vannak tárolva a vezérlőosztályon belül. Egy valós alkalmazásban természetesen lekérdezhet egy adatbázist, vagy más külső adatforrást használhat.
A vezérlő két módszert határoz meg, amelyek termékeket adnak vissza:
- A
GetAllProductsmetódus a termékek teljes listáját adja vissza IEnumerable<Terméktípusként> . - A
GetProductmetódus egyetlen terméket keres az azonosítója alapján.
Ennyi az egész! Rendelkezik egy működő webes API-val. A vezérlő minden metódusa egy vagy több URI-nak felel meg:
| Vezérlőmetódus | URI |
|---|---|
| GetAllProducts | /api/products |
| GetProduct | /api/products/id |
A(z) GetProduct metódus esetében az URI azonosítója helyőrző. Ha például a terméket 5-ös azonosítóval szeretné lekérni, az URI az api/products/5.
További információ arról, hogy a Web API hogyan irányítja át a HTTP-kérelmeket a vezérlő metódusaihoz: Útválasztás ASP.NET Webes API-ban.
A Webes API meghívása Javascript és jQuery használatával
Ebben a szakaszban hozzáadunk egy HTML-lapot, amely az AJAX használatával hívja meg a webes API-t. JQuery használatával indítjuk el az AJAX-hívásokat, és frissítjük az oldalt az eredményekkel.
A Megoldáskezelőben kattintson a jobb gombbal a projektre, és válassza a Hozzáadás, majd az Új elem lehetőséget.
Az Új elem hozzáadása párbeszédpanelen válassza ki a Webes csomópontot a Visual C# alatt, majd válassza ki a HTML-lap elemet. Adja a lapnak a "index.html" nevet.
Cserélje le a fájl minden elemét a következőre:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Product App</title>
</head>
<body>
<div>
<h2>All Products</h2>
<ul id="products" />
</div>
<div>
<h2>Search by ID</h2>
<input type="text" id="prodId" size="5" />
<input type="button" value="Search" onclick="find();" />
<p id="product" />
</div>
<script src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-2.0.3.min.js"></script>
<script>
var uri = 'api/products';
$(document).ready(function () {
// Send an AJAX request
$.getJSON(uri)
.done(function (data) {
// On success, 'data' contains a list of products.
$.each(data, function (key, item) {
// Add a list item for the product.
$('<li>', { text: formatItem(item) }).appendTo($('#products'));
});
});
});
function formatItem(item) {
return item.Name + ': $' + item.Price;
}
function find() {
var id = $('#prodId').val();
$.getJSON(uri + '/' + id)
.done(function (data) {
$('#product').text(formatItem(data));
})
.fail(function (jqXHR, textStatus, err) {
$('#product').text('Error: ' + err);
});
}
</script>
</body>
</html>
A jQueryt többféleképpen is lekérheti. Ebben a példában a Microsoft Ajax CDN-t használtam. Innen is letöltheti, http://jquery.com/és a ASP.NET "Web API" projektsablon jQueryt is tartalmaz.
Termékek listájának lekérése
A termékek listájának lekéréséhez küldjön egy HTTP GET kérést az "/api/products" címre.
A jQuery getJSON függvény AJAX-kérést küld. A válasz JSON-objektumok tömböt tartalmaz. A done függvény egy visszahívást ad meg, amelyet a rendszer meghív, ha a kérés sikeres. A visszahívás során frissítjük a DOM-et a termékinformációkkal.
$(document).ready(function () {
// Send an AJAX request
$.getJSON(apiUrl)
.done(function (data) {
// On success, 'data' contains a list of products.
$.each(data, function (key, item) {
// Add a list item for the product.
$('<li>', { text: formatItem(item) }).appendTo($('#products'));
});
});
});
Termék lekérése azonosító alapján
Ha azonosító alapján szeretne lekérni egy terméket, küldjön egy HTTP GET kérést az "/api/products/id" címre, ahol az azonosító a termékazonosító.
function find() {
var id = $('#prodId').val();
$.getJSON(apiUrl + '/' + id)
.done(function (data) {
$('#product').text(formatItem(data));
})
.fail(function (jqXHR, textStatus, err) {
$('#product').text('Error: ' + err);
});
}
Továbbra is hívjuk getJSON az AJAX-kérés elküldését, de ezúttal az azonosítót a kérelem URI-jában helyezzük el. A kérés válasza egyetlen termék JSON-reprezentációja.
Az alkalmazás futtatása
Nyomja le az F5 billentyűt az alkalmazás hibakeresésének megkezdéséhez. A weblapnak az alábbihoz hasonlóan kell kinéznie:
Ha azonosító alapján szeretne lekérni egy terméket, adja meg az azonosítót, majd kattintson a Keresés gombra:
Ha érvénytelen azonosítót ad meg, a kiszolgáló HTTP-hibát ad vissza:
A HTTP-kérés és a válasz megtekintése az F12 használatával
HA HTTP-szolgáltatással dolgozik, nagyon hasznos lehet látni a HTTP-kéréseket és a válaszüzeneteket. Ezt az Internet Explorer 9 F12 fejlesztői eszközeivel teheti meg. Az Internet Explorer 9-ben nyomja le az F12 billentyűt az eszközök megnyitásához. Kattintson a Hálózat fülre, és nyomja le a Rögzítés indítása gombot. Most lépjen vissza a weblapra, és nyomja le az F5 billentyűt a weblap újbóli betöltéséhez. Az Internet Explorer rögzíti a http-forgalmat a böngésző és a webkiszolgáló között. Az összefoglaló nézet egy lap összes hálózati forgalmát megjeleníti:
Keresse meg a "api/products/" relatív URI bejegyzését. Jelölje ki ezt a bejegyzést, és kattintson az Ugrás a részletes nézetre. A részletes nézetben lapfülek találhatók a kérés- és válaszfejlécek és -törzsek megtekintéséhez. Ha például a Kérés fejlécek fülre kattint, láthatja, hogy az ügyfél "application/json" kérést kért az Elfogadás fejlécben.
Ha a Válasz törzs fülre kattint, láthatja, hogy a terméklista hogyan lett szerializálva JSON-ra. Más böngészők hasonló funkciókkal rendelkeznek. Egy másik hasznos eszköz a Fiddler, egy webes hibakeresési proxy. A Fiddler használatával megtekintheti a HTTP-forgalmat, és HTTP-kéréseket is írhat, így teljes mértékben szabályozhatja a kérelem HTTP-fejléceit.
Az Azure-ban futó alkalmazás megtekintése
Élő webalkalmazásként szeretné látni a kész webhelyet? Az alkalmazás teljes verzióját üzembe helyezheti az Azure-fiókjában.
A megoldás Azure-beli üzembe helyezéséhez Azure-fiókra van szüksége. Ha még nem rendelkezik fiókkal, a következő lehetőségek közül választhat:
- Nyisson meg egy Azure-fiókot ingyenesen – Krediteket kaphat a fizetős Azure-szolgáltatások kipróbálásához, és a használatuk után is megtarthatja a fiókot, és ingyenes Azure-szolgáltatásokat használhat.
- MSDN-előfizetői előnyök aktiválása – AZ MSDN-előfizetés minden hónapban krediteket biztosít, amelyeket a fizetős Azure-szolgáltatásokhoz használhat.
Következő lépések
- A POST, PUT és DELETE műveleteket támogató ÉS adatbázisba írt HTTP-szolgáltatások teljesebb példáiért tekintse meg a Web API 2 és az Entity Framework 6 használatát.
- A http-szolgáltatáson felüli folyékony és rugalmas webalkalmazások létrehozásáról további információt ASP.NET egyoldalas alkalmazással kapcsolatban talál.
- A Visual Studio-webprojektek Azure App Service-ben való üzembe helyezéséről további információt a ASP.NET webalkalmazás létrehozása az Azure App Service-ben című témakörben talál.