Comments (9)
Thank you for your response. I mean if we have such response schema:
class SigninOutput(Schema):
email: EmailStr
name: str
Then do not return just {'email': '', 'name': ''}
But instead do this kind transformation:
{'data': {'type': 'sometype', attributes: {'email': '', 'name': ''}}}
from django-ninja.
hi @HrachMD
Not sure I understand... do you have any references/links to this schema validation ?
from django-ninja.
Maybe we need something like this 👉 https://github.com/django-json-api/django-rest-framework-json-api
from django-ninja.
We're having this issue as well, and currently the responses are a bit awkward because JSONAPI uses an "envelope" that the actual data gets wrapped in, so Ninja only ever sees the "envelope" and the resulting names are "wrong" (it basically thinks that every API returns a class of type Envelope
).
Maybe it would be nice to have something that takes the proper classes and wraps them in the envelope.
from django-ninja.
maybe what you need is custom renderer ?
https://django-ninja.rest-framework.com/tutorial/response-renderers/
Note: Django Ninja is designed on top of OpenAPI specifcation/standard
while JSON:API is an alternative standard
technically with custom renderer you can achieve responses like you describe, but autogenerated openapi docs and schema will be useless
from django-ninja.
Ah, that makes sense, thank you.
from django-ninja.
Does OpenAPI mandate the response schema that APIs should return? What is the recommended way of returning e.g. relationships in Ninja? Currently, if we need to return, for example, a User
object and a Subscription
object, we'll need to have a UserSubscriptionResponse
class that contains them, and that can quickly become unwieldy with larger APIs.
from django-ninja.
@skorokithakis You can use generics to help cleanup the code with embedded pydantic models. Here is an example for JSONAPI:
https://github.com/DeanWay/pydantic-jsonapi
from django-ninja.
Hm, that's an interesting solution, thanks @stephenrauch. I don't think our juniors are going to love it, as generics are a rather advanced type concept, but it seems to solve the problem well, thanks.
from django-ninja.
Related Issues (20)
- Overriding JSON schema title and summary without using `Field` HOT 1
- [BUG] CSRF Fails with Django Auth HOT 15
- [BUG] Order of operations affect response and request schemas HOT 1
- Documentation - link the schema article to the error article
- Add description to tags HOT 2
- Field order issue in JSON response HOT 1
- [BUG] Allow specifying field types for custom fields
- [BUG] The other API URLs work, but the openapi docs don't appear. HOT 5
- [BUG] Can't use parameter `keys`
- how to add a description for query params that shows in the generated docs?
- Field with list factory causes API docs to not load with non-serializable. HOT 2
- Annotate Decimal field does not supported "Unable to serialize unknown type: <class 'ellipsis'"
- Traversing the data structures to create an HTTP API client HOT 3
- how to use token ? HOT 1
- Path parameters, order matters HOT 3
- [BUG] Combining JWTAuth with django_auth only works in that order
- [BUG] Pydantic 2.7.0 incompatibily HOT 4
- [BUG] ModelSchema with ManyToManyField won't work under async views HOT 5
- How do you use aliases with nested objects
- [BUG] HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from django-ninja.