目前,请求方法接收编码令牌作为参数(该令牌是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
)到我的数据类。
请求方法应该仅将转换后的数据类作为参数。
我用 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 https://www.baeldung.com/spring-mvc-custom-data-binder
我希望它对其他人有帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)