CURL 的 POST/GET/PUT 方法
GET 请求
- 一个简单的 Get 请求
curl -X GET http://192.168.2.35/hello
- 添加请求头的 Get 请求
curl -X GET -H "Host: example.com" http://192.168.2.35/hello
- 添加查询的 Get 请求
curl -X GET "http://192.168.2.35/hello?query1=abc&query2=def&query3=ghi"
POST 请求
- 一个简单的 POST 请求
curl -X POST -d "param1=value1¶m2=value2" http://192.168.2.35/echo
- 发送 JSON 数据
curl -X POST -H "Content-Type: application/json" -d '{"key1":"value1","key2":"value2"}' http://192.168.2.35/echo
- 使用文件传递数据
curl -X POST -d @data.json http://192.168.2.35/echo
- 上传文件
curl -X POST -F 'file=@/path/to/file.txt' http://example.com/upload
常见的 Content-Type
- 文本类型
text/html:HTML 格式,用于网页内容。
text/plain:纯文本格式,不包含任何格式信息。
text/xml:XML 格式,用于结构化数据的传输。 - 图片类型
image/gif:GIF 图片格式。
image/jpeg:JPEG 图片格式。
image/png:PNG 图片格式。 - 应用类型
application/json:JSON 数据格式,常用于 API 请求和响应。
application/xml:XML 数据格式。
application/pdf:PDF 文件格式。
application/msword:Microsoft Word 文档格式。
application/octet-stream:二进制流数据,通常用于文件下载。 - 表单数据类型
application/x-www-form-urlencoded:表单默认的编码格式,数据以 key=value&key2=value2 的形式发送。
multipart/form-data:用于文件上传的编码格式,允许同时上传文本字段和文件。 - 音频和视频类型
audio/mpeg:MP3 音频格式。
video/mp4:MP4 视频格式。
使用场景
在发送 POST 请求时,设置 Content-Type 可以告诉服务器请求体中的数据格式,以便正确解析。例如,当发送 JSON 数据时,使用 Content-Type: application/json。
在响应中,服务器通过 Content-Type 告知客户端返回的数据类型,以便客户端根据类型进行适当处理。例如,浏览器根据 Content-Type: image/jpeg 来显示图片。curl -X POST -H "Content-Type: application/json" -d '{"name":"Tom","age":18}' https://example.com/api
总结
了解和正确使用 Content-Type 对于确保数据在客户端与服务器之间的正确传递至关重要。不同的 Content-Type 类型适用于不同的数据格式和传输需求。
PUT 请求
- 发送简单的 Put 请求
curl -X PUT -d "param1=value1¶m2=value2" http://example.com/resource
- 发送 Json
curl -X PUT -H "Content-Type: application/json" -d '{"key1":"value1","key2":"value2"}' http://example.com/resource
- 上传文件
使用 -T 选项,这会将文件内容作为 PUT 请求的主体发送。
curl -T filename.txt http://example.com/resource
- 设置请求头
curl -X PUT -H "Authorization: Bearer YOUR_TOKEN" -d '{"key":"value"}' http://example.com/resource
PUT 和 POST的区别
我看来并没有什么区别,只是规定了我们用 Put 最好是更新,如果不是,也行,但是不利于维护
PUT 和 POST 是 HTTP 协议中两种常用的请求方法,它们在功能、用法和特性上有显著的区别。以下是它们的主要区别:
1. 功能和用途
-
PUT:
- 通常用于更新或替换服务器上的资源。
- 客户端需要发送完整的资源内容,即使只修改部分内容。
- 如果指定的资源不存在,则可以创建一个新的资源。
-
POST:
- 通常用于创建新的资源或提交数据到服务器进行处理。
- 客户端可以只发送部分资源内容,服务器会根据接收到的数据进行处理。
- 每次执行 POST 请求可能会创建新的资源。
2. 幂等性
-
PUT:
- 是一种幂等操作,即多次执行相同的 PUT 请求将产生相同的结果。例如,更新用户信息时,无论执行多少次,只要数据相同,结果都是一致的。
-
POST:
- 是一种非幂等操作,多次执行相同的 POST 请求可能会导致不同的结果。例如,每次提交表单可能会创建多个相同的记录。
3. 响应状态码
-
PUT:
- 成功时通常返回
200 OK
(表示更新成功)或204 No Content
(表示成功但无返回内容)。
- 成功时通常返回
-
POST:
- 成功时通常返回
201 Created
(表示新资源已创建),并且响应中包含新资源的 URI。
- 成功时通常返回
4. 数据传递方式
-
PUT:
- 客户端必须提供完整的资源数据。例如,如果要更新用户信息,必须提供所有用户信息,即使只修改了其中一项。
-
POST:
- 客户端可以提交部分数据,服务器根据提供的数据进行处理。例如,可以只提交用户的新邮箱地址,而不需要提供其他信息。
总结
特性 | PUT | POST |
---|---|---|
用途 | 更新或替换资源 | 创建新资源或提交数据 |
幂等性 | 是(多次请求结果相同) | 否(多次请求可能产生不同结果) |
数据要求 | 必须提供完整资源 | 可以只提供部分数据 |
响应状态码 | 200 OK 或 204 No Content | 201 Created |
在实际应用中,根据具体需求选择合适的请求方法至关重要。PUT 方法适用于需要更新整个资源的场景,而 POST 方法更适合用于创建新资源或处理部分数据。
Citations:
[1] https://apifox.com/apiskills/the-difference-between-put-and-post/
[2] https://cloud.baidu.com/article/2920542
[3] https://blog.csdn.net/qq_41800366/article/details/108792197
[4] https://blog.csdn.net/maxmao1024/article/details/79591726
[5] https://segmentfault.com/a/1190000043507313
[6] https://juejin.cn/post/7229626260715962428
License:
CC BY 4.0