Webhooks de OpenAPI¶
🌐 Traducción por IA y humanos
Esta traducción fue hecha por IA guiada por humanos. 🤝
Podría tener errores al interpretar el significado original, o sonar poco natural, etc. 🤖
Puedes mejorar esta traducciónayudándonos a guiar mejor al LLM de IA.
Hay casos donde quieres decirle a losusuarios de tu API que tu aplicación podría llamar asu aplicación (enviando una request) con algunos datos, normalmente paranotificar de algún tipo deevento.
Esto significa que en lugar del proceso normal de tus usuarios enviando requests a tu API, estu API (o tu aplicación) la que podríaenviar requests a su sistema (a su API, su aplicación).
Esto normalmente se llama unwebhook.
Pasos de los webhooks¶
El proceso normalmente es quetú defines en tu código cuál es el mensaje que enviarás, elbody de la request.
También defines de alguna manera en quémomentos tu aplicación enviará esas requests o eventos.
Ytus usuarios definen de alguna manera (por ejemplo en un panel web en algún lugar) elURL donde tu aplicación debería enviar esas requests.
Toda lalógica sobre cómo registrar los URLs para webhooks y el código para realmente enviar esas requests depende de ti. Lo escribes como quieras entu propio código.
Documentando webhooks conFastAPI y OpenAPI¶
ConFastAPI, usando OpenAPI, puedes definir los nombres de estos webhooks, los tipos de operaciones HTTP que tu aplicación puede enviar (por ejemplo,POST,PUT, etc.) y losbodies de las requests que tu aplicación enviaría.
Esto puede hacer mucho más fácil para tus usuariosimplementar sus APIs para recibir tus requests dewebhook, incluso podrían ser capaces de autogenerar algo de su propio código de API.
Información
Los webhooks están disponibles en OpenAPI 3.1.0 y superiores, soportados por FastAPI0.99.0 y superiores.
Una aplicación con webhooks¶
Cuando creas una aplicación deFastAPI, hay un atributowebhooks que puedes usar para definirwebhooks, de la misma manera que definiríaspath operations, por ejemplo con@app.webhooks.post().
fromdatetimeimportdatetimefromfastapiimportFastAPIfrompydanticimportBaseModelapp=FastAPI()classSubscription(BaseModel):username:strmonthly_fee:floatstart_date:datetime@app.webhooks.post("new-subscription")defnew_subscription(body:Subscription):""" When a new user subscribes to your service we'll send you a POST request with this data to the URL that you register for the event `new-subscription` in the dashboard. """@app.get("/users/")defread_users():return["Rick","Morty"]Los webhooks que defines terminarán en el esquema deOpenAPI y en la interfaz automática dedocumentación.
Información
El objetoapp.webhooks es en realidad solo unAPIRouter, el mismo tipo que usarías al estructurar tu aplicación con múltiples archivos.
Nota que con los webhooks en realidad no estás declarando unpath (como/items/), el texto que pasas allí es solo unidentificador del webhook (el nombre del evento), por ejemplo en@app.webhooks.post("new-subscription"), el nombre del webhook esnew-subscription.
Esto es porque se espera quetus usuarios definan el actualURL path donde quieren recibir la request del webhook de alguna otra manera (por ejemplo, un panel web).
Revisa la documentación¶
Ahora puedes iniciar tu app e ir ahttp://127.0.0.1:8000/docs.
Verás que tu documentación tiene laspath operations normales y ahora también algunoswebhooks:








