gpt4 book ai didi

java - 如何在 Spring 中将 RequestHeader 转换为自定义对象

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:59:53 25 4
gpt4 key购买 nike

我的 Controller 中有方法:

@RequestMapping(method = RequestMethod.POST)
public CustomObject createCustomObject(final @RequestHeader("userId") Long userId) {
...
}

我可以编写一些自定义转换器或类似的东西来将此 RequestHeader userId 参数转换为 User 对象,这样我的方法将是:

@RequestMapping(method = RequestMethod.POST)
public CustomObject createCustomObject(final User user) {
...
}

可以用spring-mvc做吗?

最佳答案

基本上我是根据评论的建议实现的。下面是一个例子:

import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestHeader;

@RestController
public class SimpleController {

@GetMapping("/user")
public String greeting(@RequestHeader(name = "userId") User user) {
return "Hey, " + user.toString();
}
}

public class User {
private String id;
private String firstName;
private String lastName;
...
}

然后我们将创建一个转换器:

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

@Component
public class UserFromHeaderConverter implements Converter<String, User> {

@Override
public User convert(final String userId) {
// fetch user from the database etc.

final User user = new User();
user.setId(userId);
user.setFirstName("First");
user.setLastName("Last");

return user;
}
}

要测试它,请执行:curl --header "userId: 123"localhost:8080/user

结果将是:嘿,用户{id='123', firstName='First', lastName='Last'}

版本:

  • spring-boot:2.0.3
  • spring-web:5.0.7

关于java - 如何在 Spring 中将 RequestHeader 转换为自定义对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32271042/

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