[英]How to define parameter list dynamically based on request type for request model in spring boot for swagger
[英]Swagger configuration in spring boot project, for same request model, need to display different responses, example in request model
以下是我的 2 个 API 的定义:
@PutMapping("/valA")
public ResponseEntity<DummyResponse> getValA(@RequestBody DummyModel model) {
DummyResponse dummyResponse = new DummyResponse();
dummyResponse.setResA(model.getValA());
return new ResponseEntity<>(dummyResponse, HttpStatus.OK);
}
@PutMapping("/valB")
public ResponseEntity<DummyResponse> getValB(@RequestBody DummyModel model) {
DummyResponse dummyResponse = new DummyResponse();
dummyResponse.setResB(model.getValB());
return new ResponseEntity<>(dummyResponse, HttpStatus.OK);
}
DummyModel.java
package com.dummy.mo.model;
import java.io.Serializable;
import lombok.Data;
@Data
public class DummyModel implements Serializable {
private String valA;
private String valB;
}
现在大摇大摆,对于这两个 api,示例如下所示:
但是,我的要求是在招摇示例中仅在第一个 api 中显示 valA 和在第二个 api 中显示 valB。 我的意思是,我只想显示相应 API 所需的参数。
是否有任何注释或配置可以在 API/控制器级别定义所需的请求参数。 请注意:我无法更改 API 结构或模型类。
你为什么不拆分 DummyModel 类。
如果我们创建 2 个接口,如下所示:
public interface One {
String valB = null;
public default String getBalB(){
return valB;
}
}
public interface Two {
String valA = null;
public default String getBalA(){
return valA;
}
}
虚拟模型类
@Data
public class DummyModel implements One, Two{
private String valB = null;
private String valA = null;
public DummyModel(String valA,String valB) {
this.valB = valB;
this.valA = valA;
}
}
更新您的 API:
@RestController
public class TestClass {
@PutMapping("/valA")
public ResponseEntity<One> getValA(@RequestBody One model) {
DummyModel dummyResponse = new DummyModel(null,model.getBalB());
return new ResponseEntity<>(dummyResponse, HttpStatus.OK);
}
@PutMapping("/valB")
public ResponseEntity<Two> getValB(@RequestBody Two model) {
DummyModel dummyResponse = new DummyModel(model.getBalA(),null);
return new ResponseEntity<>(dummyResponse, HttpStatus.OK);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.