msgspec icon indicating copy to clipboard operation
msgspec copied to clipboard

Generate FastAPI docs from msgspec.Struct json schema

Open Arseniy-Popov opened this issue 1 year ago • 3 comments
trafficstars

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.

Arseniy-Popov avatar Mar 23 '24 22:03 Arseniy-Popov

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.

provinzkraut avatar Mar 29 '24 09:03 provinzkraut

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.

kemingy avatar Apr 03 '24 03:04 kemingy

Some code that solved the problem in my project

booqoffsky avatar Oct 03 '24 13:10 booqoffsky