繁体   English   中英

spring boot项目中的swagger配置,对于同一个request model,需要展示不同的response,request model中的例子

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM