REST架构中的PUT、DELETE请求如何实现?

发布于 2022-08-24 09:02:26 字数 158 浏览 18 评论 0

REST的例子是这样的:

POST   /user     创建
GET    /user/123 查看
DELETE /user/123 删除
PUT    /user/123 更新

浏览器的method只支持GET和POST呢,那PUT和DELETE又该如何实现呢?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

不疑不惑不回忆 2022-08-31 09:02:26

POST的form, 通过隐藏的input传, 比如rails里就是

<input name="_method" type="hidden" value="put" />

程序里判断method为POST,且存在_method的post值的时候, 就REST化

具体用起来就是通过request.method获取的是rest method, 通过request.request_method获取的原生method

咆哮 2022-08-31 09:02:26

虽然完整的rest架构包括put和delete,但是现在是没有办法直接用这两个方法的,并且这些方法和浏览器是没有关系的,关键是webserver不支持。
看到说可以配置Tomcat的web.xml 文件达到支持这两个方法的目的:http://blog.csdn.net/kthq/article/det...

所以一般处理要么是api丑陋一点,将方法也写在url里,要么是和null的回答一样,一些开发框架提供了input[name="_method"]的方式来实现,如express。

<form method="post" action="/">
    <input type="hidden" name="_method" value="put" />
    <input type="text" name="user[name]" />
    <input type="text" name="user[email]" />
    <input type="submit" value="Submit" />
</form>

app.put('/', function(){
    console.log(req.body.user);
    res.redirect('back');
});
妳是的陽光 2022-08-31 09:02:26

不一定是在浏览器里使用REST的网页,可能仅仅是一个REST的API,供外部程序使用。那调用的时候任何方法都可以使用了

比如说
curl -X PUT -d "field1=value1&field2=value2" http://example.com/className/newID

@null 回答的是某些框架自己的行为,要注意区别

凉城凉梦凉人心 2022-08-31 09:02:26

如果HTTP的客户端(User Agent)不提供PUT、DELETE方法的话,官方推荐用POST重载的方式来实现。

情域 2022-08-31 09:02:26

用JS啊……= =

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文