[英]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) {
...
}
此類/注釋應包含將token
( String
)轉換為我的數據類所必需的代碼。 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.