Comments (4)
Not really a bug I think but rather an enhancement. We have a few instances where this kind of duplication occurs and it's reasonable to optimise some of these away. Iirc @peterschutt you were discussing a similar case recently regarding DTOs?
from litestar.
This perhaps-too-eager-example-generation also applies to the response examples created via OpenAPIConfig(..., create_examples=True)
as well, e.g.:
"components": {
"schemas": {
"Response": {
"properties": {
"text": {
"type": "string",
"examples": {
"text-example-1": { <---- example per field, unnecessary?
"description": "Example text value",
"value": "DwEkQQHiBrmXZcSFtoJx"
}
}
},
"num": {
"type": "integer",
"examples": {
"num-example-1": { <---- example per field, unnecessary?
"description": "Example num value",
"value": 4966
}
}
}
},
"type": "object",
"required": [
"num",
"text"
],
"title": "Response",
"examples": {
"response-example-1": { <---- example per model, this is ok
"description": "Example value",
"value": {
"text": "IgNZYFcagWptUqCwdERi",
"num": 3674
}
}
}
}
}
}
I don't know if the GUIs actually need or benefit from field-specific examples, but perhaps the model level one would suffice.
from litestar.
I don't know if the GUIs actually need or benefit from field-specific examples, but perhaps the model level one would suffice.
IMO as long as we don't have more granular settings for turning example generation on/off, generating them everywhere it's supported is the more reasonable approach since it covers more use cases. Say we don't generate examples for the fields but a user wanted examples generated for that, they would have no way of turning this on. This way, we might make the schema a bit more verbose, but it actually doesn't do any harm to have these examples in there.
from litestar.
That's a fair statement. All off by default, all enabled with create_examples=True
.
However, currently errors do get examples by default, e.g.:
"examples": {
"NotAuthorized": {
"value": {
"status_code": 401,
"detail": "Missing or invalid credentials",
"extra": {}
}
}
}
}
That's an exception to the rule.
And then you allow disabling example generation with ResponseSpec
. Another exception, perhaps (but no harm in that).
I guess there are roughly 4 modes here:
- JSON schema only
- OpenAPI schema only
- Both JSON + OpenAPI
- None
There could be a toggle, but I agree that global on/off should be sufficient, as the OpenAPI schema is really intended as machine-readable and not really for humans.
(The other issue #3058 confused me a bit here.)
from litestar.
Related Issues (20)
- Docs: Add common recipes/FAQ section HOT 1
- Bug: Litestar instance or factory not found HOT 1
- Enhancement: allow finer tuning `LoggingConfig` for exception logging
- Bug: SQLAlchemy models with default=func.now() error with Unexpected default type HOT 3
- Bug: [OpenAPI] Upload file is not possible when defined as Optional HOT 2
- Bug: Using plugin results in DTO given to dto parameter not being used for return HOT 2
- CI: Fix devcontainer config HOT 1
- DTO backend does not transferring mappings with nested models HOT 10
- Bug: SerializationException when running modeling-and-features demo from docs HOT 3
- Bug: Can't convert sqlalchemy model to pydantic model which is inherited from BaseModel HOT 1
- Enhancement: Add Pydantic's error dictionary to ValidationException's extra dict
- Enhancement: make `SessionMiddleware` return custom types HOT 3
- Bug: OpenAPI docs fail to generate with certain validators and pydantic v1 HOT 4
- Bug: Multi-body response incompatible with LoggingMiddleware HOT 2
- Bug: test failures
- Bug: `return_dto` is silently ignored if return data type does not match DTO definition HOT 1
- Bug: Test error
- Enhancement: add `default_json_serializer` to `__all__` in `litestar.logging.config`
- Docs: Migrating to Litestar from Django HOT 1
- Decoupled, transactional communication of domain events and commands
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 litestar.