HTTP&RestFUL
HTT&PREST
- REST,全称是 Representational State Transfer,中文意为表现层状态转移。它是一种设计风格,而不是标准,主要用于客户端和服务器交互类的软件。RESTful 是实现 REST 设计风格的 web 服务。 资源状态转换,在web中资源的唯一标识式URL,通过URL路径定位网上的资源。
- HTTP,全称是 HyperText Transfer Protocol,中文意为超文本传输协议。它是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP 是万维网的数据通信的基础。
HTTP 请求方法
根据 HTTP 标准,HTTP 请求可以使用多种请求方法。
HTTP1.0 定义了三种请求方法: GET, POST 和 HEAD 方法。
HTTP1.1 新增了六种请求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法。
序 号 | 方法 | 描述 |
---|---|---|
1 | GET | 用于请求服务器发送某个资源。GET 请求不应该对服务器上的资源做出任何更改,并且应该是幂等的(即多次重复的请求应该产生相同的结果)。例如,当你在浏览器中输入 URL 地址时,浏览器会发送一个 GET 请求来获取该 URL 对应的网页。 |
2 | HEAD | 类类似于 GET 请求,但服务器不返回请求的资源主体,只返回响应头。HEAD 请求通常用于获取资源的元信息,如资源的大小、类型等,而不需要获取资源的实际内容。 |
3 | POST | 用于向服务器提交数据,通常用于提交表单或上传文件。POST 请求可能会导致服务器上的状态更改,并且不一定是幂等的。例如,在提交注册表单时,浏览器通常会发送一个 POST 请求,将用户提供的信息发送到服务器进行处理。 |
4 | PUT | 用于向服务器上传资源,通常用于更新已存在的资源或创建新的资源。PUT 请求应该是幂等的,即多次执行相同的 PUT 请求应该产生相同的结果。 |
5 | DELETE | 用于请求服务器删除指定的资源。DELETE 请求应该是幂等的,即多次执行相同的 DELETE 请求应该产生相同的结果。 |
6 | CONNECT | 用于建立到服务器上指定端口的隧道,通常用于代理服务器。 |
7 | OPTIONS | 用于请求服务器返回支持的 HTTP 方法和其他选项。例如,客户端可以发送 OPTIONS 请求来确定服务器支持哪些 CORS(跨域资源共享)策略。 |
8 | TRACE | 回显服务器收到的请求,主要用于测试或诊断。 |
9 | PATCH | 用于在请求-响应链上的每个节点获取传输路径。TRACE 请求通常用于调试和测试,以查看请求在经过各种代理服务器和中间件时如何被修改。 |
Rest和Http什么关系?
REST 和 HTTP 的关系在于,REST 通常使用 HTTP 作为其通信协议。REST 通过使用 HTTP 的方法,如 GET、POST、PUT、DELETE 等,来实现资源的获取、创建、修改和删除等操作。这些方法也被称为 CRUD(Create、Read、Update、Delete)操作。
在 RESTful 的设计中,每个 URL 代表一种资源,而通过 HTTP 的方法来操作这些资源。例如,我们可以通过发送 GET 请求到某个 URL 来获取资源,通过 POST 请求来创建新的资源,通过 PUT 请求来更新资源,以及通过 DELETE 请求来删除资源。
同时,RESTful 设计也强调无状态性,即每次请求都应包含处理请求所需的所有信息,而不依赖于之前的请求。这使得 RESTful 服务更易于扩展,并且更适合于互联网的分布式环境。
总的来说,REST 是一种设计风格,而 HTTP 是实现这种设计风格的一种协议。在实际应用中,RESTful web 服务通常使用 HTTP 作为其通信协议,但理论上,也可以使用其他的协议来实现 REST 设计风格。
curl工具
- curl是一个非常实用的、用来与服务器之间传输数据的工具;
- 支持的协议包括 (DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, TELNET and TFTP),curl设计为无用户交互下完成工作;
- curl提供了一大堆非常有用的功能,包括代理访问、用户认证、ftp上传下载、HTTP POST、SSL连接、cookie支持、断点续传...。
用法
$ curl -A 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36' https://google.com
$ curl -d '{"login": "emma", "pass": "123"}' -H 'Content-Type: application/json' https://google.com/login
参数 | 含义 |
---|---|
-A | 指定客户端的用户代理标头,即User-Agent。curl 的默认用户代理字符串是curl/[version]。 |
-b | 用来向服务器发送 Cookie。 |
-c | 将服务器设置的 Cookie 写入一个文件 |
-d | 用于发送 POST 请求的数据体。 |
--data-urlencode | 等同于-d,发送 POST 请求的数据体,区别在于会自动将发送的数据进行 URL 编码。 |
-e | 用来设置 HTTP 的标头Referer,表示请求的来源。 |
-F | 用来向服务器上传二进制文件。 |
-G | 用来构造 URL 的查询字符串。 |
-H | 添加 HTTP 请求的标头。 |
-i | 打印出服务器回应的 HTTP 标头。 |
-I | 向服务器发出 HEAD 请求,然会将服务器返回的 HTTP 标头打印出来。 |
-k | 指定跳过 SSL 检测。 |
-L | 会让 HTTP 请求跟随服务器的重定向。curl 默认不跟随重定向。 |
--limit-rate | 用来限制 HTTP 请求和回应的带宽,模拟慢网速的环境。 |
-o | 将服务器的回应保存成文件,等同于wget命令。 |
-O | 将服务器回应保存成文件,并将 URL 的最后部分当作文件名。 |
-s | 将不输出错误和进度信息。 |
-S | 指定只输出错误信息,通常与-s一起使用。 |
-u | 用来设置服务器认证的用户名和密码。 |
-v | 输出通信的整个过程,用于调试。 |
-x | 指定 HTTP 请求的代理。 |
-X | 指定 HTTP 请求的方法。 |
参考
https://blog.csdn.net/u011482647/article/details/115480457
https://www.ruanyifeng.com/blog/2019/09/curl-reference.html