Ejercicio: Creación de un proyecto de API web

Completado

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.

  1. En Visual Studio Code, seleccione Archivo > Abrir carpeta.

  2. Cree una carpeta con el nombre ContosoPizza en la ubicación que prefiera y haga clic en Seleccionar carpeta.

  3. Abra el terminal integrado desde Visual Studio Code; para ello, seleccione Ver > Terminal en el menú principal.

  4. En la ventana del terminal, copie y pegue el siguiente comando.

    dotnet new webapi --no-https
    

    Este 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-https crea 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 Yes en 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.cs
    

    El 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.

  5. 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

  1. Ejecute el siguiente comando para compilar la aplicación:

    dotnet build
    
  2. Ejecute el comando siguiente de la CLI de .NET Core en el shell de comandos:

    dotnet run
    

    El 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 en https://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+C en el teclado y ejecutando de nuevo el comando dotnet 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.

  3. Abra un explorador web y vaya a:

    http://localhost:5000/weatherforecast
    

    La 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"
      },
      // ...
    ]
    
  4. 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-httprepl
    

    El 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.

  5. Conéctese a la API web mediante el comando siguiente:

    httprepl http://localhost:5000
    

    También puede ejecutar el comando siguiente en cualquier momento mientras se ejecuta HttpRepl:

    Por ejemplo:

    (Disconnected)> connect http://localhost:5000
    
  6. Explore los puntos de conexión disponibles ejecutando el siguiente comando:

    ls
    

    El 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] 
    
  7. Vaya al punto de conexión WeatherForecast ejecutando el siguiente comando:

    cd WeatherForecast
    

    El comando siguiente muestra las API disponibles para el punto de conexión WeatherForecast:

    http://localhost:5000/> cd WeatherForecast
    /WeatherForecast    [GET]
    
  8. Realice una solicitud GET en HttpRepl usando el comando siguiente:

    get
    

    El comando siguiente hace una solicitud GET que 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"
      },
      // ..
    ]
    
  9. Salga de la sesión de HttpRepl actual con el siguiente comando:

    exit
    
  10. Vuelva al terminal dotnet en la lista desplegable de Visual Studio Code y apague la API web al presionar CTRL+C en el teclado.

Ahora que se ha creado la API web, vamos a modificarla para satisfacer las necesidades de la API web de pizzas.