gpt4 book ai didi

java - PUT 和 POST - 它们是否依赖于实现?

转载 作者:行者123 更新时间:2023-12-01 20:11:07 25 4
gpt4 key购买 nike

我正在使用 PUT 和 POST 开发 Spring Rest Web 服务

@RequestMapping(value = "/test", method = RequestMethod.POST)
@Override
public String function(Model model)
{
}

那么,在这种情况下使用 PUT 和 POST 有什么区别?

我知道PUT是幂等的,这意味着如果多次调用同一个url,效果应该是相同的。如果我提供请求方法为 PUT,并且如果我在函数中包含 DB 操作,PUT 的含义不会改变,这意味着如果我多次调用测试 url,DB 值每次都会改变。

我的问题是幂等性、状态变化以及所有这些功能是否都取决于开发人员的实现?

更好的例子:

@RequestMapping(value = "/test", method=RequestMethod.POST, produces={"application/json"})
public @ResponseBody List<Integer> postData(@RequestParam String name) {

if (name.equalsIgnoreCase("okkk")) {
return returnDataList();
}else {
List<Integer> list = new ArrayList<Integer>();
list.add(12345);
return list;
}
}

@RequestMapping(value = "/test/{name}", method=RequestMethod.PUT, produces={"application/json"})
public @ResponseBody List<Integer> putData(@PathVariable String name) {

if (name.equalsIgnoreCase("okkk")) {
return returnDataList();
}else {
List<Integer> list = new ArrayList<Integer>();
list.add(12345);
return list;
}

我相信这两种方法是相同的。我只是放了PUT和POST,有点困惑。

最佳答案

这是对此的最佳答案:What's the difference between a POST and a PUT HTTP REQUEST?

无论 PUT 被调用多少次,它都应该一遍又一遍地执行完全相同的操作。 PUT 响应不可缓存。

POST 允许 Web 服务器决定如何处理数据。假设“服务器设置了适当的缓存控制和过期 header ”,这些请求可以被缓存。

我认为还有另一个资源会有所帮助:PUT vs. POST in REST

作者很好地总结了何时使用 POST 以及何时使用 PUT。我选择了最简单的:

POST:用于修改和更新资源。

PUT:用于创建资源,或覆盖它。

关于java - PUT 和 POST - 它们是否依赖于实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46695754/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com