Comments (2)
Meanwhile I did a little debugging which brought me to an experiment: I changed the value for QUERY_STRING_DELIMITERS['form']
in the file uri_parsing.py from ","
(comma) to a less common/likely string like "|||"
(three pipes) and could observe that the erroneously split disappeared. But to be honest, I am not very experienced with elaborate testing nor with all the multiple possible query-formats, so I cannot overlook the consequences of such a modification.
But digging through the code raised a question for me: I don't really understand, why at all - speaking for the form-request-style - in the process of URI-parsing the parameters-array is joined to a string first, just to be exploded back into an array a little later. Could anyone explain to me what's the reason behind this?
from connexion.
For anyone running into this issue, here is a workaround by defining a custom URI-parser-class within our app. We abstract the OpenAPIURIParser
and re-define the delimiter by re-assigning a value to the delimiter-dictionary (which is very bad practice as this is supposed to be a constant):
from connexion.uri_parsing import OpenAPIURIParser, QUERY_STRING_DELIMITERS
class OpenAPIURIParserMod(OpenAPIURIParser):
def __init__(self, param_defns, body_defn):
super().__init__(param_defns, body_defn)
QUERY_STRING_DELIMITERS['form'] = '|||'
and in app.py
:
from .parsers.OpenAPIURIParserMod import OpenAPIURIParserMod
app = AsyncApp(
__name__,
# any other options
uri_parser_class=OpenAPIURIParserMod,
)
from connexion.
Related Issues (20)
- swagger-ui not resolving external references
- a2wsgi bug causing timeout when response validation fails HOT 2
- Not getting any response if response validation fails.
- `json_schema` `resolve_refs` throws a confusing error HOT 3
- Connexion 3 ambiguous API routing confuses connexion validation HOT 1
- Strict Response Validation doesn't enforce status codes from schema
- GZipMiddleware cannot be used with response validation HOT 2
- required readOnly fields are required in request body when they shouldn't be HOT 1
- RuntimeError by URL with encoded newline (`%0A`) parameter
- Splitting spec files still throws schema and file not found errors (json_schema exceptions) but still works with Connexion <= 3.0.2 HOT 1
- Can't handle requests with `connexion[flask]` without `uvicorn`. HOT 2
- Middlewares are executed altough url doesnt exist in openapi spec HOT 1
- Middlewares are executed altough url doesnt exist in openapi spec
- Following example in documentation gives DeprecationWarning
- Variable in server url not being interpolated HOT 1
- Authentication validation function doesn't respect error classes HOT 2
- Fails with 500 error when returning HTTPStatus and default response is configured
- Trigger new release HOT 1
- Custom "uri_parser" stops working when "connexion" is upgraded to "v3.0.6" from "v2.14.2" HOT 2
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 connexion.