• 用不同RequestMethod制作出restful规范的应用


    HTTP/1.1请求类型简介

    HTTP/1.1所实现的method有以下七种(rfc2616 5.1.1):

    OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT

    其中OPTIONS 这个方法比较特殊,它用于获取当前URL所支持的方法,如果请求成功,它将会返回一个名为“Allow”的头,值是所支持的方法,如“GET,POST”。

    打个比方,如果在servlet中复写了doGet方法,那将返回的头是 Allow: GET, HEAD, TRACE, OPTIONS

    规范是这么定义的,这还要看容器实现了多少,

    比如 Tomcat 7 中的 servlet api 实现了 doOptions, doGet, doHead, doPost, doPut, doDelete, doTrace 就差个 CONNECT了。

    spring mvc 中 DispatcherServlet 仅支持 GET, HEAD, POST, PUT, PATCH, DELETE

    若要实现OPTIONS和TRACE 的支持,需要在DispatcherServlet 配置中加上dispatchOptionsRequest和dispatchTraceRequest。

    不同请求类型在restful中的应用

    GET:

      CRUD中的READ

      GET请求可以说是最常见的了,它的本质就是发送一个请求取得服务器的某个资源,资源通过HTTP Header和Body(HTML文本、JSON、图片、视频等)组成。

    HEAD:

      判断资源是否存在

      HEAD和GET本质上是一样的,只不过HEAD方法不会含有Body,仅仅是Header而已,比如下面测试数据,所请求的URL只配置了get请求方式,但是用head也可以请求到资源(200),只不过body大小为0(千万不要用head做请求方式,你永远拿不到数据),通过这个下面例子就得出了HEAD的应用场景,你如果要判断这个资源是否存在就可以用head的方式,一可以节约带宽,二意义也更加明确。

    POST

      CURD中的CREATE

      向服务器提交数据,对应创建操作,表单提交基本都用这个方式

    PUT

      CURD中的UPDATE

      PUT和POST类似,都是向服务器发送数据,不过PUT通常指定了资源的存放位置,而POST没有,比如 /blog(POST) 代表新建一个blog,/blog/100(PUT)就代表把blog放到100这个地址 这个操作就更像是修改而不是新建了。

    PATCH

      CURD中的UPDATE

      PATCH和PUT、POST类似,也是向服务器发送数据,但是PATCH用于部分资源的更新,比如更新一个字段,而PUT就用于更新资源比较完整的内容,除了id字段,其他所有的字段都更新了。

    DELETE

      CURD中的DELETE

      这个方法语义就很明确了

    TRACE CONNECT基本不会用到,springmvc默认也不支持

    参考

    HTTP六种请求方法_百度文库

    RESTful, 说说 http 的 patch method | 隔叶黄莺 Unmi Blog - 软件编程实践

    HttpServlet (Servlet 3.0 API Documentation - Apache Tomcat 7.0.70)

    rfc2616

    RequestMethod (Spring Framework 4.3.2.RELEASE API)

  • 相关阅读:
    Thymeleaf中,将字符串作为js函数的参数
    测试开发面试题总结
    013_RomanToInteger
    Python列表中查找某个元素的索引(多个)
    Python“函数式编程”中常用的函数
    009_Palindrome Number
    Python字符串方法总结(一)
    007_Reverse Integer
    002_Add Two Numbers
    pycharm上传代码到github
  • 原文地址:https://www.cnblogs.com/parasis/p/5810635.html
Copyright © 2020-2023  润新知