Ejercicio: Creación de un proyecto de API web
Imagine que es empleado de una empresa de pizzas llamada Contoso Pizza. El administrador le ha pedido que desarrolle un servicio RESTful de administración del inventario de pizzas como requisito previo para el escaparate web de la empresa. El servicio debe permitir la adición, la visualización, la modificación y la eliminación de tipos de pizzas—un uso estandarizado de los verbos de acción HTTP más conocidos como C reate, R ead, U pdate, D elete (CRUD; Crear, Leer, Actualizar y Eliminar).
La CLI de .NET es la forma más sencilla de crear una API web de ASP.NET Core. La CLI se ha preinstalado al instalar el SDK de .NET.
En esta unidad va a usar la CLI de .NET para crear una API web en local. También comprenderá el proyecto resultante.
Creación y exploración de un proyecto de API web
Para configurar un proyecto de .NET para que funcione con API web se va a usar Visual Studio Code. Visual Studio Code incluye un terminal integrado que facilita la creación de un proyecto. Si no quiere usar otro editor de código, puede ejecutar los comandos de este módulo en un terminal.
En Visual Studio Code, seleccione Archivo > Abrir carpeta.
Cree una carpeta con el nombre ContosoPizza en la ubicación que prefiera y haga clic en Seleccionar carpeta.
Abra el terminal integrado desde Visual Studio Code; para ello, seleccione Ver > Terminal en el menú principal.
En la ventana del terminal, copie y pegue el siguiente comando.
dotnet new webapi --no-httpsEste comando crea los archivos para un proyecto de API web básico, junto con un archivo de proyecto de C# de nombre ContosoPizza.csproj, que va a devolver una lista de previsiones meteorológicas.
La marca
--no-httpscrea una aplicación que se ejecuta sin certificado HTTPS, para que todo sea lo más sencillo posible para el desarrollo local.Importante
Antes de realizar ningún trabajo de producción con API web y, categóricamente, antes de implementar en producción, se recomienda configurar el certificado de desarrollo HTTPS de ASP.NET Core. Esto ayuda a mantener la privacidad de las comunicaciones de API, así como a proteger frente a alteraciones mediante ataques de tipo "Man in the middle".
Puede recibir un mensaje de Visual Studio Code para que agregue recursos para depurar el proyecto. Haga clic en
Yesen el cuadro de diálogo.El comando usa una plantilla de proyecto de ASP.NET Core, con el alias webapi, para aplicar scaffolding a un proyecto de API web basado en C#. Se crea un directorio ContosoPizza que contiene un proyecto de ASP.NET Core que se ejecuta en .NET. El nombre del proyecto coincide con el nombre del directorio ContosoPizza.
Ahora debería tener acceso a estos archivos.
-| Controllers -| obj -| Properties -| appsettings.Development.json -| appsettings.json -| ContosoPizza.csproj -| Program.cs -| Startup.cs -| WeatherForecast.csEl comando anterior usa una plantilla de proyecto de ASP.NET Core, con el alias webapi, para aplicar scaffolding a un proyecto de API web basado en C#. Se crea un directorio ContosoPizza que contiene un proyecto de ASP.NET Core que se ejecuta en .NET. El nombre del proyecto coincide con el nombre del directorio ContosoPizza.
Examine los archivos y directorios siguientes:
Nombre Descripción Controllers/ Contiene clases con métodos públicos expuestos como puntos de conexión HTTP. Program.cs Contiene un método Main, el punto de entrada administrado de la aplicación.Startup.cs Configura los servicios y la canalización de solicitudes HTTP de la aplicación. ContosoPizza.csproj Contiene los metadatos de configuración del proyecto.
Compilación y prueba de la API web
Ejecute el siguiente comando para compilar la aplicación:
dotnet buildEjecute el comando siguiente de la CLI de .NET Core en el shell de comandos:
dotnet runEl comando anterior:
- Hospeda la API web con el servidor web de Kestrel de ASP.NET Core.
- Genera información de registro de la API web en ejecución.
La API web se hospeda en ambos
http://localhost:5000. Si no se pasara la marca--no-https, se vería que la API también se ejecuta enhttps://localhost:5001.Importante
Compruebe la salida del terminal si detecta cualquier comportamiento inesperado. Si la compilación no se realiza correctamente o se producen otros errores, la información del archivo de registro ayuda a solucionar problemas. A medida que se realizan cambios en el código, es necesario detener la API web presionando
CTRL+Cen el teclado y ejecutando de nuevo el comandodotnet run.En el futuro solo se va a usar el comando
dotnet run, ya que este también compila el proyecto si algo ha cambiado.Abra un explorador web y vaya a:
http://localhost:5000/weatherforecastLa siguiente salida representa un extracto del código JSON que se devuelve:
[ { "date": "2021-02-12T20:36:01.4678814+00:00", "temperatureC": 33, "temperatureF": 91, "summary": "Scorching" }, { "date": "2021-02-13T20:36:01.4682337+00:00", "temperatureC": -8, "temperatureF": 18, "summary": "Cool" }, // ... ]Abra un nuevo terminal integrado desde Visual Studio Code. Para ello, seleccione Terminal > Nuevo terminal en el menú principal y ejecute el siguiente comando:
dotnet tool install -g Microsoft.dotnet-httpreplEl comando anterior instala la herramienta de línea de comandos .NET HTTP Read-Eval-Print Loop (REPL) que se va a usar para realizar solicitudes HTTP a la API web.
Conéctese a la API web mediante el comando siguiente:
httprepl http://localhost:5000También puede ejecutar el comando siguiente en cualquier momento mientras se ejecuta HttpRepl:
Por ejemplo:
(Disconnected)> connect http://localhost:5000Explore los puntos de conexión disponibles ejecutando el siguiente comando:
lsEl comando anterior detecta todas las API disponibles en el punto de conexión conectado. Debería mostrar lo siguiente:
http://localhost:5000/> ls . [] WeatherForecast [GET]Vaya al punto de conexión WeatherForecast ejecutando el siguiente comando:
cd WeatherForecastEl comando siguiente muestra las API disponibles para el punto de conexión
WeatherForecast:http://localhost:5000/> cd WeatherForecast /WeatherForecast [GET]Realice una solicitud
GETen HttpRepl usando el comando siguiente:getEl comando siguiente hace una solicitud
GETque equivale al desplazamiento al punto de conexión en el explorador:HTTP/1.1 200 OK Content-Type: application/json; charset=utf-8 Date: Fri, 02 Apr 2021 17:31:43 GMT Server: Kestrel Transfer-Encoding: chunked [ { "date": 4/3/2021 10:31:44 AM, "temperatureC": 13, "temperatureF": 55, "summary": "Sweltering" }, { "date": 4/4/2021 10:31:44 AM, "temperatureC": -13, "temperatureF": 9, "summary": "Warm" }, // .. ]Salga de la sesión de HttpRepl actual con el siguiente comando:
exitVuelva al terminal
dotneten la lista desplegable de Visual Studio Code y apague la API web al presionarCTRL+Cen el teclado.
Ahora que se ha creado la API web, vamos a modificarla para satisfacer las necesidades de la API web de pizzas.
¿Necesita ayuda? Consulte nuestra guía de solución de problemas o notifique un problema para enviar comentarios específicos.