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

我的控制器中有方法:

@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?

回答:

基本上我已经完成了评论中的建议。我将仅提供简短示例。假设我们有下一个控制器和用户POJO:

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

结果将是: Hey, User{id='123', firstName='First', lastName='Last'}

顺便说一下,我已经使用了下一个版本: spring-boot:2.0.3 and spring-web:5.0.7

以上是 如何在Spring中将RequestHeader转换为自定义对象 的全部内容, 来源链接: utcz.com/qa/433832.html

回到顶部