簡體   English   中英

如何轉換spring-boot請求參數

[英]How to convert spring-boot request parameter

當前,請求方法接收編碼令牌作為參數(此令牌是String但不是JSON或類似的名稱)。 然后,此令牌被解碼為數據類。

@GetMapping(value = "/api/xyz")
public ResponseEntity<XYZ> xyz(@NotBlank String token) {
    Data data = Token.parse(token);
    ...
}

是否可以編寫類似於@RequestBody如何將參數轉換為其他內容的注釋?

該請求應該看起來像這樣:

@GetMapping(value = "/api/xyz")
public ResponseEntity<XYZ> xyz(@TokenParser Data data) {
    ...
}

此類/注釋應包含將tokenString )轉換為我的數據類所必需的代碼。 request方法應僅將轉換后的數據類作為參數。

我用spring-boot Converter解決了這個問題。

import javax.inject.Inject;

import org.springframework.core.convert.converter.Converter;
import org.springframework.stereotype.Component;

@Component
public class TokenConverter implements Converter<String, Data> {

    private final TokenParser tokenParser;

    @Inject
    public TokenConverter(TokenParser TokenParser) {
        this.tokenParser = tokenParser;
    }

    @Override
    public Data convert(String token) {
        return tokenParser.parse(token);
    }
}

只需在項目中的任何地方添加這樣的轉換器。 映射由spring-boot管理。

新要求:

@GetMapping(value = "/api/method")
public ResponseEntity<Data> method(@RequestParam("token") Data data) {
    ...
}

有關更多信息: https : //www.baeldung.com/spring-mvc-custom-data-binder

我希望它可以幫助其他人。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM