Skip to content

Commit 66221fa

Browse files
generate empty responses in openapi when res is missing
1 parent 42fd468 commit 66221fa

2 files changed

Lines changed: 29 additions & 9 deletions

File tree

src/lib/open_api/operation.rs

Lines changed: 23 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ use crate::lib::{
1010
use http::Method;
1111
use indexmap::IndexMap;
1212
use serde::{Deserialize, Serialize};
13+
use std::collections::HashMap;
1314
use typetag::serde;
1415

1516
#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
@@ -50,18 +51,31 @@ impl Operation {
5051
.req
5152
.as_ref()
5253
.map(|req| RefOr::Item(RequestBody::of(req, context))),
53-
responses: op
54-
.res
55-
.as_ref()
56-
.iter()
57-
.map(|res| {
54+
responses: {
55+
if let Some(res) = op.res.as_ref() {
5856
let status_code = StatusCode::of(method.clone());
59-
(
57+
let mut map = IndexMap::new();
58+
59+
map.insert(
6060
status_code.clone(),
6161
RefOr::Item(Response::of(res, status_code, context)),
62-
)
63-
})
64-
.collect(),
62+
);
63+
64+
map
65+
} else {
66+
let status_code = StatusCode { val: http::StatusCode::NO_CONTENT };
67+
let response = Response {
68+
description: "No Content".into(),
69+
content: None,
70+
headers: HashMap::new(),
71+
};
72+
73+
let mut map = IndexMap::new();
74+
map.insert(status_code, RefOr::Item(response));
75+
76+
map
77+
}
78+
},
6579
}
6680
})
6781
}

src/lib/test/op-params-open-api.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,9 @@ paths:
6464
$ref: '#/components/schemas/SomeEnum'
6565
default: [first-val]
6666
operationId: op0Gett
67+
responses:
68+
"204":
69+
description: No Content
6770
post:
6871
tags:
6972
- op-params-trust
@@ -88,6 +91,9 @@ paths:
8891
type: string
8992
required: true
9093
operationId: op1Postt
94+
responses:
95+
"204":
96+
description: No Content
9197
parameters:
9298
- in: cookie
9399
name: commonCookieParam0

0 commit comments

Comments
 (0)