好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

RESTful understand POST VS PUT

RESTful understand POST VS PUT

CRUD-based action names get things simpler

create  -> POST 

show -> GET 

PUT -> update

delete -> DELETE

运行一下看看吧~

总结一下HTTP请求跟action的4-7关系表:

其实HTML规格只支持GET/POST,不支持PUT和DELETE方法的,rails在生成HTML的时候偷偷的做了一些处理。

我们写的代码是这样的:

源码 打印 ?

<%##event_path默认是GET,删除需要指定:method##%>   <%= link_to  'delete' , event_path(event), :method => :delete %>  

生成的HTML是这样的:

源码 打印 ?

<a onclick= "var f = document.createElement('form'); f.style.display = 'none'; this.parentNode.appendChild(f); f.method = 'POST'; f.action = this.href;var m = document.createElement('input'); m.setAttribute('type', 'hidden'); m.setAttribute('name', '_method'); m.setAttribute('value', 'delete'); f.appendChild(m);var s = document.createElement('input'); s.setAttribute('type', 'hidden'); s.setAttribute('name', 'authenticity_token'); s.setAttribute('value', 'TwKvS1qYjCaO2RQ3QlCdo3K57NfH0yTqKShmMk8jjI0='); f.appendChild(s);f.submit();return false;"  href= "/events/1" >delete</a>  

当点击的时候,实际上在页面上生成了下面内容:

源码 打印 ?

<form id= "edit_events_1"  method= "post"  action= "/events/1" >   <input type= "hidden"  value= "put"  name= "_method" />   ....   </form>  

其实各种浏览器之间还有一些关于DELETE和PUT一些支持或者不支持的不统一现象,这些问题Rails处理掉了,我们不需要关注了。

另外,XmlHttpRequest(Ajax request)定义了GET/POST/PUT/DELETE/HEAD/OPTIONS

不过不是所有浏览器都支持。

查看更多关于RESTful understand POST VS PUT的详细内容...

  阅读:37次

上一篇: js tree

下一篇:seo 线上工具