Spring:当我的类已经用@RestController注释时,为什么我仍然应该使用@RequestBody?

2024-04-29

我目前正在将 Java 和 Spring 用于我的 Web 服务应用程序。我正在使用@RestController希望消除使用注释的需要@ResponseBody and @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();
    }
}


我真的需要使用@RequestBody当我已经使用时注释@RestController?


@RestController包含@ResponseBody所以你不再需要这个了。

但你仍然需要@RequestBody注解,因为您为 POST 请求调用的方法might包含多个参数,其中一个参数映射到请求体,该方法的其他参数可能是PathVariables或者例如UriComponentsBuilder.

为了标记要映射到请求正文的参数,您需要注释。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring:当我的类已经用@RestController注释时,为什么我仍然应该使用@RequestBody? 的相关文章

随机推荐