Skip to content

Commit b7836c2

Browse files
author
程序猿DD-翟永超
authored
Merge pull request #39 from JeffLi1993/master
支持全局响应消息
2 parents 6eab0f2 + 4b7df00 commit b7836c2

File tree

3 files changed

+103
-20
lines changed

3 files changed

+103
-20
lines changed

README.md

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,17 @@ swagger.globalOperationParameters[1].description=some description two
8080
swagger.globalOperationParameters[1].modelRef=string
8181
swagger.globalOperationParameters[1].parameterType=body
8282
swagger.globalOperationParameters[1].required=false
83+
84+
// 取消使用默认预定义的响应消息,并使用自定义响应消息
85+
swagger.apply-default-response-messages=false
86+
swagger.global-response-message.get[0].code=401
87+
swagger.global-response-message.get[0].message=401get
88+
swagger.global-response-message.get[1].code=500
89+
swagger.global-response-message.get[1].message=500get
90+
swagger.global-response-message.get[1].modelRef=ERROR
91+
swagger.global-response-message.post[0].code=500
92+
swagger.global-response-message.post[0].message=500post
93+
swagger.global-response-message.post[0].modelRef=ERROR
8394
```
8495

8596
## 配置说明
@@ -203,7 +214,25 @@ swagger.docket.bbb.basePackage=com.yonghui
203214
- `@Size`
204215
- `@Pattern`
205216

217+
### 自定义全局响应消息配置
218+
219+
支持 POST,GET,PUT,PATCH,DELETE,HEAD,OPTIONS,TRACE 全局响应消息配置,配置如下
220+
221+
```$xslt
222+
// 取消使用默认预定义的响应消息,并使用自定义响应消息
223+
swagger.apply-default-response-messages=false
224+
swagger.global-response-message.get[0].code=401
225+
swagger.global-response-message.get[0].message=401get
226+
swagger.global-response-message.get[1].code=500
227+
swagger.global-response-message.get[1].message=500get
228+
swagger.global-response-message.get[1].modelRef=ERROR
229+
swagger.global-response-message.post[0].code=500
230+
swagger.global-response-message.post[0].message=500post
231+
swagger.global-response-message.post[0].modelRef=ERROR
232+
```
233+
206234
## 贡献者
207235

208236
- [程序猿DD-翟永超](https://github.com/dyc87112/)
209237
- [小火](https://renlulu.github.io/)
238+
- [泥瓦匠BYSocket](https://github.com/JeffLi1993)

src/main/java/com/spring4all/swagger/SwaggerAutoConfiguration.java

Lines changed: 41 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -145,8 +145,8 @@ public List<Docket> createRestApi(SwaggerProperties swaggerProperties) {
145145
Docket docketForBuilder = new Docket(DocumentationType.SWAGGER_2)
146146
.host(swaggerProperties.getHost())
147147
.apiInfo(apiInfo)
148-
.globalOperationParameters(buildGlobalOperationParametersFromSwaggerProperties(
149-
swaggerProperties.getGlobalOperationParameters()));
148+
.globalOperationParameters(assemblyGlobalOperationParameters(swaggerProperties.getGlobalOperationParameters(),
149+
docketInfo.getGlobalOperationParameters()));
150150

151151
// 全局响应消息
152152
if (!swaggerProperties.getApplyDefaultResponseMessages()) {
@@ -171,14 +171,12 @@ public List<Docket> createRestApi(SwaggerProperties swaggerProperties) {
171171
}
172172

173173

174-
175174
@Override
176175
public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
177176
this.beanFactory = beanFactory;
178177
}
179178

180179

181-
182180
private List<Parameter> buildGlobalOperationParametersFromSwaggerProperties(
183181
List<SwaggerProperties.GlobalOperationParameter> globalOperationParameters) {
184182
List<Parameter> parameters = Lists.newArrayList();
@@ -234,27 +232,53 @@ private List<Parameter> assemblyGlobalOperationParameters(
234232
/**
235233
* 设置全局响应消息
236234
*
237-
* @param swaggerProperties
235+
* @param swaggerProperties 支持 POST,GET,PUT,PATCH,DELETE,HEAD,OPTIONS,TRACE
238236
* @param docketForBuilder
239237
*/
240238
private void buildGlobalResponseMessage(SwaggerProperties swaggerProperties, Docket docketForBuilder) {
241-
List<ResponseMessage> responseMessages = new ArrayList();
242-
List<SwaggerProperties.GlobalResponseMessage> globalResponseMessages =
243-
swaggerProperties.getGlobalResponseMessages();
244-
for (SwaggerProperties.GlobalResponseMessage globalResponseMessage : globalResponseMessages) {
239+
240+
SwaggerProperties.GlobalResponseMessage globalResponseMessages =
241+
swaggerProperties.getGlobalResponseMessage();
242+
243+
// POST,GET,PUT,PATCH,DELETE,HEAD,OPTIONS,TRACE 响应消息体
244+
List<ResponseMessage> postResponseMessages = getResponseMessageList(globalResponseMessages.getPost());
245+
List<ResponseMessage> getResponseMessages = getResponseMessageList(globalResponseMessages.getGet());
246+
List<ResponseMessage> putResponseMessages = getResponseMessageList(globalResponseMessages.getPut());
247+
List<ResponseMessage> patchResponseMessages = getResponseMessageList(globalResponseMessages.getPatch());
248+
List<ResponseMessage> deleteResponseMessages = getResponseMessageList(globalResponseMessages.getDelete());
249+
List<ResponseMessage> headResponseMessages = getResponseMessageList(globalResponseMessages.getHead());
250+
List<ResponseMessage> optionsResponseMessages = getResponseMessageList(globalResponseMessages.getOptions());
251+
List<ResponseMessage> trackResponseMessages = getResponseMessageList(globalResponseMessages.getTrace());
252+
253+
docketForBuilder.useDefaultResponseMessages(swaggerProperties.getApplyDefaultResponseMessages())
254+
.globalResponseMessage(RequestMethod.POST, postResponseMessages)
255+
.globalResponseMessage(RequestMethod.GET, getResponseMessages)
256+
.globalResponseMessage(RequestMethod.PUT, putResponseMessages)
257+
.globalResponseMessage(RequestMethod.PATCH, patchResponseMessages)
258+
.globalResponseMessage(RequestMethod.DELETE, deleteResponseMessages)
259+
.globalResponseMessage(RequestMethod.HEAD, headResponseMessages)
260+
.globalResponseMessage(RequestMethod.OPTIONS, optionsResponseMessages)
261+
.globalResponseMessage(RequestMethod.TRACE, trackResponseMessages);
262+
}
263+
264+
/**
265+
* 获取返回消息体列表
266+
*
267+
* @param globalResponseMessageBodyList
268+
* @return
269+
*/
270+
private List<ResponseMessage> getResponseMessageList(List<SwaggerProperties.GlobalResponseMessageBody> globalResponseMessageBodyList) {
271+
List<ResponseMessage> responseMessages = new ArrayList<>();
272+
for (SwaggerProperties.GlobalResponseMessageBody globalResponseMessageBody : globalResponseMessageBodyList) {
245273
ResponseMessageBuilder responseMessageBuilder = new ResponseMessageBuilder();
246-
responseMessageBuilder
247-
.code(globalResponseMessage.getCode())
248-
.message(globalResponseMessage.getMessage());
274+
responseMessageBuilder.code(globalResponseMessageBody.getCode()).message(globalResponseMessageBody.getMessage());
249275

250-
if (!StringUtils.isEmpty(globalResponseMessage.getModelRef())) {
251-
responseMessageBuilder
252-
.responseModel(new ModelRef(globalResponseMessage.getModelRef()));
276+
if (!StringUtils.isEmpty(globalResponseMessageBody.getModelRef())) {
277+
responseMessageBuilder.responseModel(new ModelRef(globalResponseMessageBody.getModelRef()));
253278
}
254279
responseMessages.add(responseMessageBuilder.build());
255280
}
256281

257-
docketForBuilder.useDefaultResponseMessages(swaggerProperties.getApplyDefaultResponseMessages())
258-
.globalResponseMessage(RequestMethod.GET,responseMessages);
282+
return responseMessages;
259283
}
260284
}

src/main/java/com/spring4all/swagger/SwaggerProperties.java

Lines changed: 33 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import lombok.Data;
44
import lombok.NoArgsConstructor;
55
import org.springframework.boot.context.properties.ConfigurationProperties;
6-
import springfox.documentation.schema.ModelRef;
76

87
import java.util.ArrayList;
98
import java.util.LinkedHashMap;
@@ -57,8 +56,8 @@ public class SwaggerProperties {
5756
/** 是否使用默认预定义的响应消息 ,默认 true **/
5857
private Boolean applyDefaultResponseMessages = true;
5958

60-
/** 全局响应消息 ,目前支持 GET **/
61-
private List<GlobalResponseMessage> globalResponseMessages;
59+
/** 全局响应消息 **/
60+
private GlobalResponseMessage globalResponseMessage;
6261

6362
@Data
6463
@NoArgsConstructor
@@ -128,6 +127,36 @@ public static class Contact {
128127
@NoArgsConstructor
129128
public static class GlobalResponseMessage {
130129

130+
/** POST 响应消息体 **/
131+
List<GlobalResponseMessageBody> post = new ArrayList<>();
132+
133+
/** GET 响应消息体 **/
134+
List<GlobalResponseMessageBody> get = new ArrayList<>();
135+
136+
/** PUT 响应消息体 **/
137+
List<GlobalResponseMessageBody> put = new ArrayList<>();
138+
139+
/** PATCH 响应消息体 **/
140+
List<GlobalResponseMessageBody> patch = new ArrayList<>();
141+
142+
/** DELETE 响应消息体 **/
143+
List<GlobalResponseMessageBody> delete = new ArrayList<>();
144+
145+
/** HEAD 响应消息体 **/
146+
List<GlobalResponseMessageBody> head = new ArrayList<>();
147+
148+
/** OPTIONS 响应消息体 **/
149+
List<GlobalResponseMessageBody> options = new ArrayList<>();
150+
151+
/** TRACE 响应消息体 **/
152+
List<GlobalResponseMessageBody> trace = new ArrayList<>();
153+
154+
}
155+
156+
@Data
157+
@NoArgsConstructor
158+
public static class GlobalResponseMessageBody {
159+
131160
/** 响应码 **/
132161
private int code;
133162

@@ -136,6 +165,7 @@ public static class GlobalResponseMessage {
136165

137166
/** 响应体 **/
138167
private String modelRef;
168+
139169
}
140170

141171
}

0 commit comments

Comments
 (0)