Skip to content

Commit 5c7f784

Browse files
committed
Required multipart/form-data parameters not reflected in generated schema. fixes #1106
1 parent 5b992a8 commit 5c7f784

File tree

14 files changed

+969
-912
lines changed

14 files changed

+969
-912
lines changed

springdoc-openapi-common/src/main/java/org/springdoc/core/GenericParameterService.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -342,6 +342,10 @@ else if (schemaN instanceof FileSchema || schemaN instanceof ArraySchema && ((Ar
342342
}
343343
else
344344
requestBodyInfo.addProperties(paramName, schemaN);
345+
346+
if(requestBodyInfo.getMergedSchema() !=null && parameterInfo.isRequired())
347+
requestBodyInfo.getMergedSchema().addRequiredItem(parameterInfo.getpName());
348+
345349
return schemaN;
346350
}
347351

springdoc-openapi-common/src/main/java/org/springdoc/core/RequestBodyService.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -237,8 +237,10 @@ public void calculateRequestBodyInfo(Components components, MethodAttributes met
237237

238238
RequestPart requestPart = methodParameter.getParameterAnnotation(RequestPart.class);
239239
String paramName = null;
240-
if (requestPart != null)
240+
if (requestPart != null){
241241
paramName = StringUtils.defaultIfEmpty(requestPart.value(), requestPart.name());
242+
parameterInfo.setRequired(requestPart.required());
243+
}
242244
paramName = StringUtils.defaultIfEmpty(paramName, parameterInfo.getpName());
243245
parameterInfo.setpName(paramName);
244246

springdoc-openapi-webflux-core/src/test/resources/results/app4.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@
2626
"content": {
2727
"multipart/form-data": {
2828
"schema": {
29+
"required": [
30+
"resumeFile"
31+
],
2932
"type": "object",
3033
"properties": {
3134
"resumeFile": {

springdoc-openapi-webflux-core/src/test/resources/results/app78.json

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,9 @@
2222
"content": {
2323
"multipart/form-data": {
2424
"schema": {
25+
"required": [
26+
"files"
27+
],
2528
"type": "object",
2629
"properties": {
2730
"files": {
@@ -56,4 +59,4 @@
5659
}
5760
},
5861
"components": {}
59-
}
62+
}

springdoc-openapi-webmvc-core/src/test/resources/results/app103.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,10 @@
2121
"content": {
2222
"multipart/form-data": {
2323
"schema": {
24+
"required": [
25+
"body",
26+
"file"
27+
],
2428
"type": "object",
2529
"properties": {
2630
"body": {

0 commit comments

Comments
 (0)