Code Monkey home page Code Monkey logo

Comments (9)

HrachMD avatar HrachMD commented on May 14, 2024 1

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.

vitalik avatar vitalik commented on May 14, 2024

hi @HrachMD

Not sure I understand... do you have any references/links to this schema validation ?

from django-ninja.

hbutau avatar hbutau commented on May 14, 2024

Maybe we need something like this 👉 https://github.com/django-json-api/django-rest-framework-json-api

from django-ninja.

skorokithakis avatar skorokithakis commented on May 14, 2024

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.

vitalik avatar vitalik commented on May 14, 2024

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.

skorokithakis avatar skorokithakis commented on May 14, 2024

Ah, that makes sense, thank you.

from django-ninja.

skorokithakis avatar skorokithakis commented on May 14, 2024

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.

stephenrauch avatar stephenrauch commented on May 14, 2024

@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.

skorokithakis avatar skorokithakis commented on May 14, 2024

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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.