Ejercicio: Creación de un proyecto de API web

Completado

En este módulo se usa el SDK de .NET 8.0. Asegúrese de que tiene instalado .NET 8.0 mediante la ejecución del siguiente comando en el terminal de comandos que prefiera:

dotnet --list-sdks

Aparecerá un resultado similar al del ejemplo siguiente:

6.0.317 [C:\Program Files\dotnet\sdk]
7.0.401 [C:\Program Files\dotnet\sdk]
8.0.100 [C:\Program Files\dotnet\sdk]

Asegúrese de que aparezca una versión que comience en 8. Si no aparece ninguna o no se encuentra el comando, instale el SDK más reciente de .NET 8.0.

Creación y exploración de un proyecto de API web

Para configurar un proyecto de .NET para que funcione con API web se usa Visual Studio Code. Visual Studio Code incluye un terminal integrado que facilita la creación de un proyecto. Si no quiere usar un 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 elija 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 -controllers -f net8.0
    

    Este comando crea los archivos para un proyecto de API web básico que usa controladores, junto con un archivo de proyecto de C# llamado ContosoPizza.csproj, que devuelve una lista de previsiones meteorológicas. Si se produce un error, asegúrese de que tiene instalado el SDK de .NET 8.

    Importante

    Los proyectos de API web están protegidos con https de forma predeterminada. Si tiene problemas, configure el certificado de desarrollo HTTPS de ASP.NET Core.

    Puede recibir un mensaje de Visual Studio Code para que agregue recursos a fin de depurar el proyecto. Seleccione 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. Este directorio contiene un proyecto 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 y directorios:

    -| Controllers
    -| obj
    -| Properties
    -| appsettings.Development.json
    -| appsettings.json
    -| ContosoPizza.csproj
    -| ConosoPizza.http
    -| Program.cs
    -| WeatherForecast.cs
    
  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 Configura los servicios y la canalización de solicitudes HTTP de la aplicación, y contiene el punto de entrada administrado de la aplicación.
    ContosoPizza.csproj Contiene los metadatos de configuración del proyecto.
    ConosoPizza.http Contiene la configuración para probar las API de REST directamente desde Visual Studio Code.

Compilación y prueba de la API web

  1. Ejecute el comando siguiente de la CLI de .NET Core en el shell de comandos:

    dotnet run
    

    El comando anterior:

    • Busca el archivo de proyecto en el directorio actual.
    • Recupera e instala las dependencias de proyecto necesarias para este proyecto.
    • Compila el código del proyecto.
    • Hospeda la API web con el servidor web de Kestrel de ASP.NET Core en un punto de conexión HTTP y HTTPS.

    Se selecciona un puerto de 5000 a 5300 para HTTP, y de 7000 a 7300 para HTTPS, en el momento de crear el proyecto. Los puertos usados durante el desarrollo se pueden cambiar fácilmente editando el archivo launchSettings.json del proyecto. En este módulo se usa la dirección URL localhost segura que comienza por https.

    Debería obtener una salida similar a la siguiente, que indica que la aplicación se está ejecutando:

    Building...
    info: Microsoft.Hosting.Lifetime[14]
          Now listening on: https://localhost:7294
    info: Microsoft.Hosting.Lifetime[14]
          Now listening on: http://localhost:5118 
    info: Microsoft.Hosting.Lifetime[0]
          Application started. Press Ctrl+C to shut down.
    info: Microsoft.Hosting.Lifetime[0]
          Hosting environment: Development        
    

    Si ejecuta esta aplicación en su propio equipo, puede dirigir un explorador al vínculo HTTPS que se muestra en la salida (en el caso anterior, https://localhost:7294) para ver la página resultante. Recuerde este puerto, ya que se usa en todo el módulo donde se usa {PORT}.

    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 realice cambios en el código, deberá detener la API web; para ello, seleccione CTRL+C en el teclado y vuelva a ejecutar el comando dotnet run.

  2. Abra un explorador web y vaya a:

    https://localhost:{PORT}/weatherforecast
    

    Debería mostrarse una salida JSON similar a esta de ejemplo:

    [
        {
        "date": "2021-11-09T20:36:01.4678814+00:00",
        "temperatureC": 33,
        "temperatureF": 91,
        "summary": "Scorching"
        },
        {
        "date": "2021-11-09T20:36:01.4682337+00:00",
        "temperatureC": -8,
        "temperatureF": 18,
        "summary": "Cool"
        },
        // ...
    ]
    

Exploración con archivos .http

En el proyecto se incluye ContosoPizza.http, un archivo que se usa para probar los puntos de conexión de API a través de un formato estándar. Los archivos .http se admiten en varios IDE, incluidos Visual Studio y dentro de Visual Studio Code con la extensión de cliente REST instalada.

  1. Abra el archivo ContosoPizza.http.

    Este archivo se ha configurado previamente con las variables de @ContosoPizza_HostAddress y un comando GET que llama a /weatherforecast/ que acepta application/json.

  2. Seleccione el comando Sent Request encima de GET, que enviará una solicitud al servicio en ejecución.

    Al llamar a este comando, se abrirá una ventana de respuesta con una salida similar a la que vimos en el explorador:

    HTTP/1.1 200 OK
    Connection: close
    Content-Type: application/json; charset=utf-8
    Date: Wed, 17 Jan 2024 16:46:40 GMT
    Server: Kestrel
    Transfer-Encoding: chunked
    
    [
        {
            "date": "2024-01-18",
            "temperatureC": -2,
            "temperatureF": 29,
            "summary": "Warm"
        },
        {
            "date": "2024-01-19",
            "temperatureC": 24,
            "temperatureF": 75,
            "summary": "Chilly"
        },
        // ..
    ]
    

Opcional: Exploración de las API con la línea de comandos de HTTP REPL

  1. 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 REPL que se usa para realizar solicitudes HTTP a la API web.

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

    httprepl https://localhost:{PORT}
    

    Como alternativa, ejecute el siguiente comando en cualquier momento mientras HttpRepl se ejecuta:

    connect https://localhost:{PORT}
    

    Sugerencia

    Si la herramienta HttpRepl muestra la advertencia No se puede encontrar una descripción de OpenAPI, la causa más probable es un certificado de desarrollo que no es de confianza. HttpRepl requiere una conexión de confianza. Para poder continuar, debeconfigurar el sistema para confiar en el certificado de desarrollo con dotnet dev-certs https --trust.

  3. 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 y las enumera, como en la salida siguiente:

    https://localhost:{PORT}/> ls
    .                 []
    WeatherForecast   [GET] 
    
  4. Ejecute el comando siguiente para ir al punto de conexión WeatherForecast:

    cd WeatherForecast
    

    El comando anterior muestra una salida de las API disponibles para el punto de conexión WeatherForecast:

    https://localhost:{PORT}/> cd WeatherForecast
    /WeatherForecast    [GET]
    
  5. Realice una solicitud GET en HttpRepl usando el comando siguiente:

    get
    

    El comando anterior realiza una solicitud GET similar a ir 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"
        },
        // ..
    ]
    
  6. Cierre la sesión de HttpRepl actual con el siguiente comando:

    exit
    
  7. Vuelva al terminal dotnet en la lista desplegable de Visual Studio Code. Para apagar la API web, seleccione CTRL+C en el teclado.

Ahora que ha creado la API web, podemos modificarla para satisfacer las necesidades de la API web de pizza.