-
-
Notifications
You must be signed in to change notification settings - Fork 534
Open
Description
Describe the bug
springdoc-openapi generates incorrect curl commands in Swagger UI for @RequestPart parameters that contain JSON data in multipart/form-data requests. The generated curl commands are missing the required type=application/json specification for JSON parts, causing 415 Unsupported Media Type errors when executed.
To Reproduce
Spring Boot Version: 3.5.4
springdoc-openapi Version: 2.8.9
Modules: springdoc-openapi-starter-webmvc-ui
data class MetaData(
val name: String,
val value: String,
val settings: Map<String, String> = emptyMap()
)
@PostMapping("/class-works", consumes = ["multipart/form-data"])
fun dataClass(
@Parameter(
description = "Metadata as a concrete class",
required = true,
content = [Content(
mediaType = "application/json",
schema = Schema(implementation = MetaData::class)
)]
)
@RequestPart metadata: MetaData,
): String {
return "Received metadata: ${metadata.name} = ${metadata.value}"
}
- Start the application and visit Swagger UI
- Try the /class-works endpoint using "Try it out"
- Observe the generated curl command and the 415 error response
Actual curl:
curl -X 'POST' \
'http://localhost:8080/class-works' \
-H 'accept: */*' \
-H 'Content-Type: multipart/form-data' \
-F 'metadata={"name":"string","value":"string","settings":{}}'
Expected behavior
curl -X 'POST' \
'http://localhost:8080/class-works' \
-H 'accept: */*' \
-H 'Content-Type: multipart/form-data' \
-F 'metadata={"name":"string","value":"string","settings":{}};type=application/json'
Screenshots

Possibly related to #3049
See https://github.com/corneliusroemer/springdocbug for E2E reproducible example
Metadata
Metadata
Assignees
Labels
No labels