REST的例子是这样的:
POST /user 创建 GET /user/123 查看 DELETE /user/123 删除 PUT /user/123 更新
浏览器的method只支持GET和POST呢,那PUT和DELETE又该如何实现呢?
POST的form, 通过隐藏的input传, 比如rails里就是
<input name="_method" type="hidden" value="put" />
程序里判断method为POST,且存在_method的post值的时候, 就REST化
具体用起来就是通过request.method获取的是rest method, 通过request.request_method获取的原生method
虽然完整的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'); });
不一定是在浏览器里使用REST的网页,可能仅仅是一个REST的API,供外部程序使用。那调用的时候任何方法都可以使用了
比如说curl -X PUT -d "field1=value1&field2=value2" http://example.com/className/newID
curl -X PUT -d "field1=value1&field2=value2" http://example.com/className/newID
@null 回答的是某些框架自己的行为,要注意区别
https://github.com/Dreampie/resty ajax可以使用http method
如果HTTP的客户端(User Agent)不提供PUT、DELETE方法的话,官方推荐用POST重载的方式来实现。
用JS啊……= =
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
暂无简介
文章 0 评论 0
接受
发布评论
评论(6)
POST的form, 通过隐藏的input传, 比如rails里就是
程序里判断method为POST,且存在_method的post值的时候, 就REST化
具体用起来就是通过request.method获取的是rest method, 通过request.request_method获取的原生method
虽然完整的rest架构包括put和delete,但是现在是没有办法直接用这两个方法的,并且这些方法和浏览器是没有关系的,关键是webserver不支持。
看到说可以配置Tomcat的web.xml 文件达到支持这两个方法的目的:http://blog.csdn.net/kthq/article/det...
所以一般处理要么是api丑陋一点,将方法也写在url里,要么是和null的回答一样,一些开发框架提供了input[name="_method"]的方式来实现,如express。
不一定是在浏览器里使用REST的网页,可能仅仅是一个REST的API,供外部程序使用。那调用的时候任何方法都可以使用了
比如说
curl -X PUT -d "field1=value1&field2=value2" http://example.com/className/newID
@null 回答的是某些框架自己的行为,要注意区别
https://github.com/Dreampie/resty ajax可以使用http method
如果HTTP的客户端(User Agent)不提供PUT、DELETE方法的话,官方推荐用POST重载的方式来实现。
用JS啊……= =