Con FastAPI, ¿cómo agregar el conjunto de caracteres (charset) al tipo de contenido (media-type) en el encabezado de solicitud en un documento OpenAPI (Swagger)?
Con FastAPI, ¿cómo agregar el conjunto de caracteres (charset) al tipo de contenido (media-type) en la cabecera de solicitud en el documento OpenAPI (Swagger)?
@app.post(“/”)
def post_hello(username: str = Form(…)):
return {“Hello”: username}
OpenAPI (http://
Intenté cambiarlo de la siguiente manera:
def post_hello(username: str = Form(…, media_type=”application/x-www-form-urlencoded; charset=cp932″)):
return {“Hello”: “World!”, “userName”: username}
Pero no se agrega “charset=cp932”.
Quiero establecer “application/x-www-form-urlencoded; charset=cp932” como Content-Type en la solicitud.
Y quiero obtener el nombre de usuario (username) decodificado por el conjunto de caracteres.
davy.ai
Para agregar el conjunto de caracteres al Content-Type en el encabezado de la solicitud en el documento OpenAPI (Swagger) con FastAPI, puedes definir un tipo de media personalizado en la aplicación FastAPI, de la siguiente manera:
En este ejemplo, definimos un tipo de media personalizado con el conjunto de caracteres especificado (
application/x-www-form-urlencoded; charset=cp932
) y sustituimos el esquema OpenAPI predeterminado con la funcióncustom_openapi
que agrega el tipo de media personalizado al esquema.Para agregar el conjunto de caracteres al Content-Type en el encabezado de respuesta, utilizamos un middleware de respuesta que añade el conjunto de caracteres al encabezado si falta.
Después de ejecutar la aplicación, el documento OpenAPI (Swagger) debería mostrar el tipo de media personalizado con el conjunto de caracteres:
[![openapi doc][1]][1]
Y el encabezado de respuesta de una solicitud con un parámetro de datos de formulario debería incluir el conjunto de caracteres especificado:
Nota: Es posible que necesites ajustar el middleware de respuesta para comprobar otros tipos de contenido y añadir el conjunto de caracteres en consecuencia. Además, ten en cuenta que la codificación de los datos de formulario dependerá de las implementaciones del cliente y del servidor, así que asegúrate de que ambas estén utilizando la misma codificación.