gpt4 book ai didi

java - 如何转换spring-boot请求参数

转载 作者:太空宇宙 更新时间:2023-11-04 10:09:04 24 4
gpt4 key购买 nike

当前,请求方法接收一个编码 token 作为参数(此 token 是一个 String 但不是 JSON 或类似的东西)。然后该 token 被解码为数据类。

@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

我希望它对其他人有帮助。

关于java - 如何转换spring-boot请求参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52557076/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com