2019独角兽企业重金招聘Python工程师标准>>>

RESTful web服务在设计上非常依赖于HTTP。通过使用不同的HTTP方法来完成工作,使用HTTP的响应代码来同时用户一个请求是否成功。RESTful表示Representational State tranfer,使用HTTP来实现两个系统之间通信。RESTful web服务是一些指向资源的URI(统一资源标识符)的集合。这些URI可以指向一个资源或者多个资源的集合。比如说,/employee/101包含的是员工101的详细信息,而/employees会返回所有员工的列表。在RESTful web服务中,HTTP请求类型表示要对资源进行的操作。

例如:
使用HTTP GET请求访问/employee/101,可以取回该用户的详细信息。
使用POST请求访问/employee/102,将会创建一个ID为102的新员工。、使用PUT请求访问/employee/101,可以用来更新员工101的信息。
使用DELETE请求访问/employee/101,可以删除ID为101的员工的数据。

在使用PUT和POST请求的时候,具体的数据将会包含在请求体中。

Purpose of HTTP Request in RESTful WebService

当使用RESTful web服务的时候,每一种HTTP请求方法的含义如下:

GET

从服务器取回数据(只是取回数据,而不会产生其他的影响)。这是一个幂等的方法(译者注:使用相同的参数重复执行,应该能够获取到相同的结果)。下面是一个使用GET请求从服务器获取id为123的书的例子:

GET /books/123

POST

POST请求通常用来创建一个实体,也就是一个没有ID的资源。一旦这个请求成功执行了,就会在HTTP请求的响应中,返回这个新创建的实体的id。我们通常用它来上传文件或者表单。
比如,下面这个URL将会在服务器上创建一本新书:

POST /books/

PUT

PUT请求和POST请求类似,但是一般用来更新一个已有的实体。通过把已经存在的资源的ID和新的实体用PUT请求上传的服务器,来更新资源。
比如,下面这个URL将会替换掉服务器上的ID为123的书:

PUT /books/123

可以参考Leonard Richardson, Sam Ruby, and David Heinemeier Hansson写的RESTful Web Services,来了解RESTful API中什么时候该使用PUT和POST。

DELETE

DELETE方法用来从服务器上删除资源。和PUT类似,你需要把要删除的资源的ID上传给服务器。
比如下面这个URL可以用来删除服务器上ID为123的书:

DELETE /books/123

TRACE

提供一种方法来测试当一个请求发生的时候,服务器通过网络收到的内容。所以,它会返回你发送的内容。

HEAD

HEAS请求和GET请求资源类似,但是仅仅返回响应的头部(没有具体的响应体)。同时,和GET请求类似,HEAD也是幂等的,不会在服务器上造成其他影响。

OPTIONS

OPTIONS方法允许客户端请求一个服务所支持的请求方法。它所对应的响应头(response header)是Allow, 它非常简单地列出了支持的方法。
(以下例子为译者添加)
比如:

200 OK
Allow: HEAD,GET,PUT,DELETE,OPTIONS

CONNECT

主要用来建立一个对资源的网络连接(通常请求一些能够把HTTP连接转发成为TCP连接并保持的代理)。一旦建立连接后,会响应一个200状态码和一条“Connection Established”的消息。

下面这张图展示了在RESTful web服务中,不同的HTTP方法的用法:

不同HTTP方法 的用法

以上就是在RESTful web服务中不同HTTP请求类型的含义,不管是在Java中还是在其他技术中。最重要的是理解PUT和POST之间的区别,尽管PUT和POST都可以用来创建和更新实体,但是通常更倾向于使用POST来创建,而使用PUT来更新已存在的实体。

转载于:https://my.oschina.net/u/3530967/blog/1541660

RESTful中不同HTTP请求类型的含义相关推荐

  1. 请解释一下http请求中的304状态码的含义

    请解释一下http请求中的304状态码的含义 304 未被修改. 自从上次请求后,请求的网页未被修改过.服务器返回此响应时,不会返回网页内容. 如果网页自请求者上次请求后再也没有更改过,你应将服务器配 ...

  2. swagger中paramType请求类型为body

    今日在使用swagger进行调试的时候发现参数上加上@NotBlank,@NotNull注解之后,参数映射失败,没有加该注解之前是映射成功的.最后发现swagger中的请求类型变成了body,导致参数 ...

  3. 读懂 TS 中联合类型和交叉类型的含义

    创建了一个 "重学TypeScript" 的微信群,想加群的小伙伴,加我微信 "semlinker",备注重学TS. 本文是 "重学TS系列" ...

  4. Android中WebView中拦截所有请求并替换URL(支持AJAX的post请求类型)

    需求背景 接到这样一个需求,需要在 WebView 的所有网络请求中,在请求的url中,加上一个sign=xxxx 的标志位,同时添加手机本地的数据比如 sessionToken=sd54f5sd4f ...

  5. Java-如何挖取某个网站中的ajax请求信息

    通常情况,通过网络爬虫挖取到的基本为网页静态内容,而动态ajax取数的内容是我个人暂时不知如何一次性把网站中的ajax获取 这里介绍的是某个网站中的某一个ajax多某个table刷新,期数据,并提供其 ...

  6. React基础-React中发送Ajax请求以及Mock数据

    前言 在 React 中, render 函数返回的结果,取决于组件的 props 和 state 我们都知道 UI 页面上的数据不是写死的,往往是从后端的数据接口中拿到的 然后将真实的数据填充到页面 ...

  7. C++中的四种类型转化

    Q:什么是C风格转换?什么是static_cast, dynamic_cast 以及 reinterpret_cast?区别是什么?为什么要注意? A:转换的含义是通过改变一个变量的类型为别的类型从而 ...

  8. React学习(九)-React中发送Ajax请求以及Mock数据

    虽互不曾谋面,但希望能和你成为笔尖下的朋友 以读书,技术,生活为主,偶尔撒点鸡汤 不作,不敷衍,意在真诚吐露,用心分享 点击左上方,可关注本刊 撰文 | 川川 VX-ID:suibichuanji 点 ...

  9. 理解 React Native 中的 AJAX 请求

    曾经,大多数 Web 应用程序通过用户操作刷新整个网页以与 Web 服务器通信. 后来,AJAX(异步 JavaScript 和 XML)概念通过提供一种在后台与 Web 服务器通信的方式使 Web ...

最新文章

  1. java程序员修炼之道
  2. 压测导致mysql数据库CPU很高_排查压测问题引发的系统性能调优过程
  3. mysql哪些_初学MySQL哪些需要你知道
  4. linux设置环境变量 临时设置 和 永久设置
  5. Data source rejected establishment of connection, message from server: Too many connections
  6. (转)c# Invoke和BeginInvoke区别
  7. GDAL建立GeoTIFF金字塔文件
  8. 网络摄像机 c++ 抓拍_IP摄像机和工业摄像机怎么区分 IP摄像机和工业摄像机差异...
  9. 手动调整vector容器空间的方式
  10. CSDN写博客添加代码两种方法
  11. 怎么在ASP.NET中引用JS文件
  12. 实现Http Server
  13. 答题小程序之调查问卷模板开发
  14. MATLAB的cat函数
  15. android7.0 投屏,流水断崖安卓投屏
  16. android选择头像弹窗,仿QQ的头像选择弹出的对话框
  17. 【转】stringstream(sstream)常用用法介绍
  18. cesium 之三维场景展示篇(附源码下载)
  19. UE4蓝图Tick规则
  20. 嵌入式系统设计与开发期末考试复习

热门文章

  1. printf格式化字符串_Java printf()–将格式化的字符串打印到控制台
  2. ROS的学习(七)ROS的话题
  3. 有助提高效率的Web前端开发框架有哪些?
  4. Java开发大厂面试资料,让你的面试不再困难!
  5. spring boot (二) web swagger2
  6. Spring boot 2.0 with Oauth2 + Jwt
  7. viewport就是这回事
  8. iOS,多媒体,地图相关
  9. Android批量图片加载经典系列——使用LruCache、AsyncTask缓存并异步加载图片
  10. Leetcode 15.三数之和