在下面的示例中,我试图理解@RequestMapping和@PostMapping之间的区别。
对于@RequestMapping:

当我执行POST请求时:
通过邮递员http://localhost:8085/call1/initparam1?val=1111,它可以正确执行。
但是当它由GET请求进行时
http://localhost:8085/call1/getparam1

结果我没有得到1111。

对于@PostMapping,当我执行POST请求时:
通过邮递员http://localhost:8085/call1/initparam2/1999,它可以正确执行。
但是当它由GET请求进行时
http://localhost:8085/call1/getparam1

结果我没有得到1999。

请向我解释使用这两种注释之间的区别,因为我花了很多时间进行谷歌搜索和研究,但我无法弄清第一个示例为何不起作用。

控制器1

@Controller
@ResponseBody
@RequestMapping("/call1")
public class Call1 {

public String str = "inti";

@RequestMapping(value = "/initparam1", method = RequestMethod.POST)
public void initparam1(@RequestParam(value = "val") String val) {
    this.str = val;
}

@PostMapping(value = "/initparam2/{val}")
public void initparam2(@PathVariable String val) {
    this.str = val;
}

@RequestMapping("/getparam1")
@ResponseBody
public String getParam1() {
    return this.str;
}
}

最佳答案

@PostMapping 文档:

具体来说,@PostMapping是一个组合的批注,用作@RequestMapping(method = RequestMethod.POST)的快捷方式。

因此,只有方便注释才更加“冗长”,并指示带有注释的方法用于处理POST HTTP请求。

我刚刚使用2.1.4 spring boot版本检查了您的控制器方法,并且您的方案按预期工作了,所以您的配置或发送请求的方式一定有问题。

07-24 20:53