我目前正在为我的 Web 服务应用程序使用 Java 和 Spring。我正在使用 @RestController
注释,希望消除使用 @ResponseBody
和 @RequestBody
注释的需要。不幸的是,删除 @RequestBody
注释会使序列化失败。
这是我的代码,它没有将请求主体映射到我的方法参数,但没有:
@RestController
@RequestMapping(value = "/member", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
public class MemberController {
@Autowired
private MemberService memberService;
@RequestMapping("/create")
public void create(Member member) {
memberService.create(member);
}
@RequestMapping("/read")
public Member read(Member member) {
return memberService.read(member);
}
@RequestMapping("/update")
public void update(Member member) {
memberService.update(member);
}
@RequestMapping("/delete")
public void delete(Member member) {
memberService.delete(member);
}
@RequestMapping("/retrieveById")
public Member retrieveById(Member member) {
return memberService.retrieveById(member);
}
@RequestMapping("/retrieveAll")
public List<Member> retrieveAll(Member member) {
return memberService.retrieveAll();
}
}
当我已经在使用 @RestController
时,我真的需要使用 @RequestBody
注释吗?
最佳答案
@RestController
包含 @ResponseBody
因此您不再需要它。
但是您仍然需要 @RequestBody
注释,因为您为 POST 请求调用的方法可能包含多个参数,其中一个映射到请求正文,该方法的其他参数可能是 PathVariables
或例如 UriComponentsBuilder
。
并且为了标记要映射到请求体的参数,你需要注解。
关于java - Spring : Why should I still use @RequestBody when my class is already annotated with @RestController?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39343340/