jcrist / msgspec

A fast serialization and validation library, with builtin support for JSON, MessagePack, YAML, and TOML

Home Page:https://jcristharif.com/msgspec/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Generate FastAPI docs from msgspec.Struct json schema

Arseniy-Popov opened this issue · comments

Question

One can generate a json schema from a msgspec.Struct using msgspec.json.schema. Where does one put that schema so that FastAPI uses it as the schema for the endpoint's response body in the OpenAPI docs that it generates?

There doesn't seem to be a way to achive this in FastAPI despite some schema customization options. Nor is it possible to generate a pydantic model (so that it could be used for the docs) from a json schema.

Although the question relates to FastAPI rather than to msgspec directly I'm still posting it here as using Structs with FastAPI is probably a very common use-case.

The answer here is, unfortunately, that FastAPI simply does not support this for types that are not natively supported by Pydantic. There's not much that can be done from msgspec's side here, as it's a design decision/constraint on FastAPI's side.

I'm also using msgspec in a micro-service to validate the requests and generate the OpenAPI doc. I build a simple tool defspec to generate the OpenAPI schema and render it with Swagger/Redoc/Scalar.