移动服务端开发post/get方式的选择

javascript也可以发post
■网友
在练习移动服务端接口设计,好多都用post方式来交换数据,为什么呢?GET数据传输上限太小(实际上是受地址栏截断的影响),而且不安全(Post方式数据是在Header中,GET方式数据直接体现在URL中,而像Apache/Nginx/路由器等等日志,可能会记录URL,这样用GET方式来实现登陆的话,就可能导致密码被明文保存。)。最大 URL 长度是在 Internet Explorer 中的 2,083 字符(微软的翻译是用一个个词对着词典译过去的吗?)截断 PRB: 查询字符串(这篇看起来还比较像人话)如果设计的API接口也要在网页中调用呢?我的理解是题主想要用Ajax进行数据交互,其实网页中也可以使用Post方式进行数据交互的,如果要快的话建议用jQuery大概就是这样:$.post(urlPost+id,{content:reply_content},\tfunction(data) {\t\tif (data.status == \u0026#39;success\u0026#39;) {\t\t\tgetpostpage(id,data.pages);\t\t\t$(\u0026#39;#postpage_reply_content\u0026#39;).val("");\t\t} else {\t\t\tShowMsg(data.status);\t\t}\t},"json");移动服务端开发post/get方式的选择
【移动服务端开发post/get方式的选择】
实际上的编辑框发送数据,也是通过Post方式进行的。
■网友
一方面就如 @nonocast所说,HTTP的GET方法具有安全、幂等的要求。也就是说,通常接口使用GET方法是既不会修改资源本身的状态(例如,上回答一道问题就修改了资源的状态:问题多了一条答案),也同时使得接口的多次调用都是等价与一次调用的(例如修改我的回答,每次把答案改成xxx,就算改n次最后还是xxx)。而相比GET,POST方法既不需要安全也不要求幂等,也就是使得使用它几乎没有功能语义上什么限制,可以自由地表示任何操作(当然可以表达获取资源)。从HTTP前端服务器来说,通常对于GET的资源是可以根据其缓存头部设置的策略进行缓存的,而POST的资源通常是没有缓存语义在里面的。另一方面楼上有人说到的那个URL的问题,虽然根据RFC2616:The HTTP protocol does not place any a priori limit on the length ofa URI. Servers MUST be able to handle the URI of any resource they serve, and SHOULD be able to handle URIs of unbounded length if they provide GET-based forms that could generate such URIs. A server SHOULD return 414 (Request-URI Too Long) status if a URI is longer than the server can handle (see section 10.4.15).,也就是URI本身没有长度限制(此处参考What is the maximum length of a URL in different browsers?),但是不同的服务器实现不同,能支持的最大长度也会不同,(更别说客户端的实现了)这就造成了可能URL过长客户端发送不出去又或者服务器抛出414无法处理的问题。而相比之下,POST表单参数是位于HTTP body部分的,我猜测HTTP body规范中是没有指定大小限制的(求参考证实),当然许多应用服务器都有最大body限制,但通常会相当的大,远远超出URI的长度限制。如果设计的API接口也要在网页中调用呢?这个可以使用chrome上面的postman插件,十分地好用~
■网友
HTTP中GET需要考虑幂等性,而且还需要考虑CACHE保证每次都相同,这个你真的需要补充一下HTTP基础知识,另外利用curl很容易测试接口。curl --data "param1=value1\u0026amp;param2=value2" http://hostname/resourcecurl -d "param1=value1\u0026amp;param2=value2" http://hostname/resource
■网友
。。。。。。题主还是别碰这块了,我们的认证信息要从Header发,题主不得疯了?


推荐阅读