Spring @RequestMapping注释到不同的位置

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring @RequestMapping注释到不同的位置相关的知识,希望对你有一定的参考价值。

我想要得到类似的东西

http://localhost/ - display Welcome page
http://localhost/api/v1/getUser - do the `getUser` controller part
http://localhost/api/v1/addUser - do the `addUser` controller part

所以我为那部分创建了简单的控制器

@RestController
public class restController {

    @GetMapping("/")
    public String restAPI() {

            return "Welcome Page";
    }

    @RequestMapping("/api/v1")
    @PostMapping("/addUser")
    @ResponseBody
    public User addUser(@RequestBody User user) {
         //do the stuff
    }


    @RequestMapping("/api/v1")
    @GetMapping("/getUser")
    @ResponseBody
    public User getUser(@RequestBody User user) {
         //do the stuff
    }

我得到的只是欢迎页面,但任何端点都无法访问。当我删除了负责restAPI()的部分时,我能够达到这两个端点。

有没有办法混合@RequestMapping

答案

最好的解决方案是创建两个这样的控制器:

@RestController
@RequestMapping("/")
public class HomeController {

    @GetMapping
    public String restAPI() {

        return "Welcome Page";
    }
}

如果您向http://localhost/发送GET请求,则显示欢迎页面。

和:

@RestController
@RequestMapping("/api/v1")
public class UserController {

    @PostMapping
    public User addUser(@RequestBody User user) {
         //do the stuff
    }

    @GetMapping
    public User getUser(@RequestBody User user) {
        //do the stuff
    }
}

通过向http://localhost/api/v1/发送POST或GET并创建用户或获取用户。

以上是关于Spring @RequestMapping注释到不同的位置的主要内容,如果未能解决你的问题,请参考以下文章

Spring Security + MVC:相同的@RequestMapping,不同的@Secured

springboot 文档果实

springmvc 没有produces注释

如何在 Spring 3 中进行 @CrossOrigin 注释?

带有注释的 Spring MVC 验证

Spring REST 请求映射