swagger-ui icon indicating copy to clipboard operation
swagger-ui copied to clipboard

springdoc-openapi v2(swagger) request object query encoding issue

Open aiden-sim opened this issue 1 year ago • 2 comments

After migrating from springdoc-openapi v1 to v2, we started experiencing issues with requests using a query param DTO. Previously, requests were structured as standard query parameters, but now they are being URL-encoded, leading to errors.

Here is an example of a swagger request object query:

{
  "searchType": "ACCOUNT_ID",
  "searchKeywords": [
    "12345"
  ],
  "types": [
    "NORMAL",
    "WITHDRAW"
  ]
}

With springdoc-openapi v1, the request URL looked like this:

http://localhost:8080/search?searchType=ACCOUNT_ID&searchKeywords=12345&types=NORMAL&types=WITHDRAW

However, after upgrading to springdoc-openapi v2, the request URL changed to the following (with the query parameters URL-encoded):

http://localhost:8080/search?searchType=ACCOUNT_ID&searchKeywords=%5B%2212345%22%5D&types=%5B%22NORMAL%22%2C%22WITHDRAW%22%5D

Decoded, it looks like:

http://localhost:8080/search?searchType=ACCOUNT_ID&searchKeywords=["12345"]&types=["NORMAL","WITHDRAW"]

Although the requests work fine when using curl, it seems to be an issue with the new version of springdoc-openapi v2(swagger). It doesn't appear to be a application problem.

How should we address this?

I am using org.springdoc:springdoc-openapi-starter-webmvc-ui:2.6.0

aiden-sim avatar Aug 30 '24 00:08 aiden-sim

We have same problem

RomaIvanovOfficial avatar Oct 08 '24 15:10 RomaIvanovOfficial

Set @ParameterObject in method for DTO class

RomaIvanovOfficial avatar Oct 09 '24 08:10 RomaIvanovOfficial