繁体   English   中英

在 postman 请求正文中传递枚举列表

[英]Pass a list of enums in postman request body

这是我试图将枚举值传递给的 controller:

 @AllowedRequestParams({"columns", "ids"})
  @GetMapping("/v1/analysis/files")
  public ResponseEntity<byte[]> downloadAnalysis(@Valid AnalysisColumnsSelector columnsSelector,
                                                 @Valid FileUploadSearchCriteria criteria,
                                                 @Valid AnalysisSortable sortable) {
    return csv()
        .asAttachment("data_analysis.csv")
        .withBody(AnalysisDownloader.downloadAnalysis(columnsSelector, criteria, sortable));
  }

这是 object,其中包含我要传递的枚举列表:


  import static java.util.Arrays.asList;
import static org.apache.commons.collections4.CollectionUtils.isEmpty;

import java.util.List;
import lombok.EqualsAndHashCode;
import lombok.Setter;

  @EqualsAndHashCode
  @Setter
  class AnalysisColumnsSelector {

    private List<AnalysisColumnEnum> columns;

    public List<AnalysisColumnEnum> getColumns() {
      return isEmpty(columns) ? asList(AnalysisColumnEnum.values()) : columns;
    }

    public String[] getHeaders() {
      return getColumns().stream()
          .map(AnalysisColumnEnum::getHeader)
          .toArray(String[]::new);
    }
  }

这是枚举:

 import static java.util.Arrays.stream;

import lombok.Getter;
import lombok.RequiredArgsConstructor;

  @Getter
  @RequiredArgsConstructor
  enum AnalysisColumnEnum {

    ANALYSIS_COLUMN("analysisId", "[![ANALYSIS][1]][1]"),

    TITLE("title", "TITLE"),

    DISCUSSED("discussed", "Discussed");

    private final String code;
    private final String header;

    public static AnalysisColumnEnum decode(String code) {
      return stream(values())
          .filter(analysisColumn -> analysisColumn.code.equals(code))
          .findFirst()
          .orElseThrow(() -> new IllegalArgumentException("Unknown column code."));
    }

我正在传递我的请求正文,如下图所示,但值没有发送到 controller。我的错误是什么? 在此处输入图像描述

您的请求方法是 GET,但是您发送请求正文,它们不匹配。 我建议您将请求方法更改为 POST,并使用@RequestBody。 顺便说一句,你需要将三个对象封装成一个新的object。

@AllowedRequestParams({"columns", "ids"})
@PostMapping("/v1/analysis/files")
public ResponseEntity<byte[]> downloadAnalysis(@RequestBody XX xx) {
    return csv()
            .asAttachment("data_analysis.csv")
            .withBody(AnalysisDownloader.downloadAnalysis(xx.getColumnsSelector(), xx.getCriteria(), xx.getSortable()));
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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