Spe*_*pen 4 java mapping request spring-boot
目前,请求方法接收一个编码令牌作为参数(该令牌是一个String,但不是 JSON 或类似的东西)。然后该令牌被解码为数据类。
@GetMapping(value = "/api/xyz")
public ResponseEntity<XYZ> xyz(@NotBlank String token) {
Data data = Token.parse(token);
...
}
Run Code Online (Sandbox Code Playgroud)
是否可以编写类似于@RequestBody将参数转换为其他内容的注释?
该请求应该看起来像这样:
@GetMapping(value = "/api/xyz")
public ResponseEntity<XYZ> xyz(@TokenParser Data data) {
...
}
Run Code Online (Sandbox Code Playgroud)
token该类/注释应包含将( )转换为我的数据类所需的代码String。请求方法应该仅将转换后的数据类作为参数。
我用 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);
}
}
Run Code Online (Sandbox Code Playgroud)
只需在项目中的任何位置添加这样的转换器即可。该映射由 spring-boot 管理。
新请求:
@GetMapping(value = "/api/method")
public ResponseEntity<Data> method(@RequestParam("token") Data data) {
...
}
Run Code Online (Sandbox Code Playgroud)
欲了解更多信息:https://www.baeldung.com/spring-mvc-custom-data-binder
我希望它对其他人有帮助。
| 归档时间: |
|
| 查看次数: |
7442 次 |
| 最近记录: |