zoukankan      html  css  js  c++  java
  • rest请求和restful请求及其中涉及到的幂等特性

    rest情求:面向资源URI,即http请求的路径,Rest规定中要求URI各层只能用名词不用动词,这样相比传统的get请求有利于传输数据的稳定性,数据的操作流程不会被人轻易看破,也便于团队开发,各种URI一目了然;

    RestFul请求:在rest请求的基础上,再通过固定的请求方式,对URI中的资源进行各种操作,常用的有:

    • GET:查询;
    • POST:新增;
    • PUT:修改;
    • DELETE:删除;

    符合这种风格的http请求,我们就叫它RestFul;

    这其中还涉及到一个概念,叫做幂等性,即对该URI多少次操作,返回的结果都是相同的。

    因为POST是新增,因此理论上讲他不是幂等的,其他方法都是幂等的。

    HTTP GET方法用于获取资源,不应有副作用,所以是幂等的。比如:GET http://www.bank.com/account/123456,不会改变资源的状态,不论调用一次还是N次都没有副作用。请注意,这里强调的是一次和N次具有相同的副作用,而不是每次GET的结果相同。GET http://www.news.com/latest-news这个HTTP请求可能会每次得到不同的结果,但它本身并没有产生任何副作用,因而是满足幂等性的。

    HTTP DELETE方法用于删除资源,有副作用,但它应该满足幂等性。比如:DELETE http://www.forum.com/article/4231,调用一次和N次对系统产生的副作用是相同的,即删掉id为4231的帖子;因此,调用者可以多次调用或刷新页面而不必担心引起错误。

    HTTP POST方法用于创建资源,所对应的URI并非创建的资源本身,而是去执行创建动作的操作者,有副作用,不满足幂等性。比如:POST http://www.forum.com/articles的语义是在http://www.forum.com/articles下创建一篇帖子,HTTP响应中应包含帖子的创建状态以及帖子的URI。两次相同的POST请求会在服务器端创建两份资源,它们具有不同的URI;所以,POST方法不具备幂等性。

    HTTP PUT方法用于创建或更新操作,所对应的URI是要创建或更新的资源本身,有副作用,它应该满足幂等性。比如:PUT http://www.forum/articles/4231的语义是创建或更新ID为4231的帖子。对同一URI进行多次PUT的副作用和一次PUT是相同的;因此,PUT方法具有幂等性。

  • 相关阅读:
    apache的并发
    PHP 文件上传
    打包备份3天
    dz改写CSS
    linux cifs自动挂载远程windows硬盘或文件夹
    C++面向对象
    "i++"和"++i"
    《程序员面试宝典》一个程序
    《程序员面试宝典》强制转换,内存地址
    《程序员面试宝典》编程技巧--位运算
  • 原文地址:https://www.cnblogs.com/feixian-blog/p/12421149.html
Copyright © 2011-2022 走看看