【问题标题】:Swagger configuration in spring boot project for same request model but need to display different example in request modelSpring Boot 项目中针对相同请求模型的 Swagger 配置,但需要在请求模型中显示不同的示例
【发布时间】:2022-06-13 20:41:22
【问题描述】:

以下是我的 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 结构或模型类。

【问题讨论】:

    标签: java spring-boot api rest swagger


    【解决方案1】:

    为什么不拆分 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);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-17
      • 1970-01-01
      • 1970-01-01
      • 2016-07-05
      • 1970-01-01
      • 2021-08-17
      • 2017-12-10
      • 2021-06-05
      相关资源
      最近更新 更多