Beruflich Dokumente
Kultur Dokumente
A continuación, utilizaremos ASP.NET Web API para crear una API web que devuelva
una lista de productos. La página web de front-end usa jQuery para mostrar los
resultados.
Inicie Visual Studio y seleccione Nuevo proyecto desde la página de inicio. O bien,
desde el menú Archivo, seleccione Nuevo y luego Proyecto.
namespace AppProductos.Models
{
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
public string Category { get; set; }
public decimal Price { get; set; }
}
}
Agregar un controlador
En la API web, un controlador es un objeto que maneja las solicitudes HTTP. Agregaremos
un controlador que puede devolver una lista de productos o un único producto especificado
por ID.
En el Explorador de soluciones, haga clic con el botón derecho en la carpeta
Controladores. Seleccione Agregar y luego seleccione Controlador.
using AppProductos.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
namespace AppProductos.Controllers
{
public class ProductsController : ApiController
{
Product[] products = new Product[]
{
new Product { Id = 1, Name = "Sopa de Tomate", Category =
"Comestibles", Price = 1 },
new Product { Id = 2, Name = "Yo-yo", Category = "Juguetes", Price =
3.75M },
new Product { Id = 3, Name = "Martillo", Category = "Herramientas",
Price = 16.99M },
new Product { Id = 4, Name = "Atun", Category = "Comestibles", Price =
1.67M },
};
Para mantener el ejemplo simple, los productos se almacenan en una matriz fija
dentro de la clase de controlador. Por supuesto, en una aplicación real, consultaría
una base de datos o usaría alguna otra fuente de datos externa.8
¡Eso es! Usted tiene una API web en funcionamiento. Cada método en el controlador
corresponde a uno o más URI:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Product App</title>
</head>
<body>
<div>
<h2>Todos los Productos </h2>
<ul id="products" />
</div>
<div>
<h2>Buscar por ID</h2>
<input type="text" id="prodId" size="5" />
<input type="button" value="Search" onclick="find();" />
<p id="product" />
</div>
<script src="http://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>
Hay varias formas de obtener jQuery. En este ejemplo, utilicé Microsoft Ajax
CDN . También puede descargarlo desde http://jquery.com/ , y la plantilla del
proyecto ASP.NET "Web API" también incluye jQuery.
Para obtener una lista de productos, envíe una solicitud HTTP GET a "/ api /
products".
La función jQuery getJSON envía una solicitud AJAX. Para la respuesta contiene una
matriz de objetos JSON. La done función especifica una devolución de llamada que
se llama si la solicitud tiene éxito. En la devolución de llamada, actualizamos el DOM
con la información del producto.
$(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'));
});
});
});
Obtener un producto por ID
Para obtener un producto por ID, envíe una solicitud HTTP GET a "/ api / products
/ id ", donde id es la identificación del producto.
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);
});
}
Todavía llamamos getJSON para enviar la solicitud de AJAX, pero esta vez
colocamos la identificación en el URI de solicitud. La respuesta de esta solicitud es
una representación JSON de un solo producto.
Ejecutando la aplicación
Presione F5 para comenzar a depurar la aplicación. La página web debería verse
como la siguiente: