Muéstrame un ejemplo de una API hecha con una arquitectura Hexagonal usando FastAPI
Aquí hay un ejemplo básico de una API hecha con una arquitectura Hexagonal usando FastAPI:

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
    return {"Hello": "World"}

@app.get("/items/{item_id}")
def read_item(item_id: int, q: str = None):
    return {"item_id": item_id, "q": q}

En este ejemplo, estamos utilizando la biblioteca FastAPI para crear una API RESTful con dos rutas. La primera ruta, "/", devuelve un saludo básico en formato JSON. La segunda ruta, "/items/{item_id}", acepta un parámetro de identificación del artículo y un parámetro opcional "q" y devuelve ambos en formato JSON.

Este ejemplo muestra cómo FastAPI permite crear API de manera rápida y fácil utilizando una arquitectura hexagonal, que separa la lógica de negocios de los detalles de implementación de la API. De esta manera, se puede garantizar una mayor flexibilidad y mantenibilidad a medida que se agreguen nuevas funcionalidades y cambien las necesidades de la aplicación.
Below is an instruction that describes a task. Write a response that appropriately completes the request.

### Instruction:

Muéstrame un ejemplo de una API hecha con una arquitectura Hexagonal usando FastAPI

### Response:

Aquí hay un ejemplo básico de una API hecha con una arquitectura Hexagonal usando FastAPI:

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
    return {"Hello": "World"}

@app.get("/items/{item_id}")
def read_item(item_id: int, q: str = None):
    return {"item_id": item_id, "q": q}

En este ejemplo, estamos utilizando la biblioteca FastAPI para crear una API RESTful con dos rutas. La primera ruta, "/", devuelve un saludo básico en formato JSON. La segunda ruta, "/items/{item_id}", acepta un parámetro de identificación del artículo y un parámetro opcional "q" y devuelve ambos en formato JSON.

Este ejemplo muestra cómo FastAPI permite crear API de manera rápida y fácil utilizando una arquitectura hexagonal, que separa la lógica de negocios de los detalles de implementación de la API. De esta manera, se puede garantizar una mayor flexibilidad y mantenibilidad a medida que se agreguen nuevas funcionalidades y cambien las necesidades de la aplicación.
