avatar

松果工作室

欢迎光临

  • 首页
  • freeRTOS
  • ESP
  • 开发手册
  • 快速笔记
  • 个人收藏
  • 工具
Home CURL 的 POST/GET/PUT 方法
文章

CURL 的 POST/GET/PUT 方法

Posted 2024-12-8 Updated 2024-12- 8
By YCP
11~15 min read

GET 请求

  1. 一个简单的 Get 请求
    curl -X GET http://192.168.2.35/hello
  2. 添加请求头的 Get 请求
    curl -X GET -H "Host: example.com" http://192.168.2.35/hello
  3. 添加查询的 Get 请求
    curl -X GET "http://192.168.2.35/hello?query1=abc&query2=def&query3=ghi"

POST 请求

  1. 一个简单的 POST 请求
    curl -X POST -d "param1=value1&param2=value2" http://192.168.2.35/echo
  2. 发送 JSON 数据
    curl -X POST -H "Content-Type: application/json" -d '{"key1":"value1","key2":"value2"}' http://192.168.2.35/echo
  3. 使用文件传递数据
    curl -X POST -d @data.json http://192.168.2.35/echo
  4. 上传文件
    curl -X POST -F 'file=@/path/to/file.txt' http://example.com/upload

常见的 Content-Type

  1. 文本类型
    text/html:HTML 格式,用于网页内容。
    text/plain:纯文本格式,不包含任何格式信息。
    text/xml:XML 格式,用于结构化数据的传输。
  2. 图片类型
    image/gif:GIF 图片格式。
    image/jpeg:JPEG 图片格式。
    image/png:PNG 图片格式。
  3. 应用类型
    application/json:JSON 数据格式,常用于 API 请求和响应。
    application/xml:XML 数据格式。
    application/pdf:PDF 文件格式。
    application/msword:Microsoft Word 文档格式。
    application/octet-stream:二进制流数据,通常用于文件下载。
  4. 表单数据类型
    application/x-www-form-urlencoded:表单默认的编码格式,数据以 key=value&key2=value2 的形式发送。
    multipart/form-data:用于文件上传的编码格式,允许同时上传文本字段和文件。
  5. 音频和视频类型
    audio/mpeg:MP3 音频格式。
    video/mp4:MP4 视频格式。
    使用场景
    在发送 POST 请求时,设置 Content-Type 可以告诉服务器请求体中的数据格式,以便正确解析。例如,当发送 JSON 数据时,使用 Content-Type: application/json。
    curl -X POST -H "Content-Type: application/json" -d '{"name":"Tom","age":18}' https://example.com/api
    
    在响应中,服务器通过 Content-Type 告知客户端返回的数据类型,以便客户端根据类型进行适当处理。例如,浏览器根据 Content-Type: image/jpeg 来显示图片。

总结
了解和正确使用 Content-Type 对于确保数据在客户端与服务器之间的正确传递至关重要。不同的 Content-Type 类型适用于不同的数据格式和传输需求。

PUT 请求

  1. 发送简单的 Put 请求
    curl -X PUT -d "param1=value1&param2=value2" http://example.com/resource
  2. 发送 Json
    curl -X PUT -H "Content-Type: application/json" -d '{"key1":"value1","key2":"value2"}' http://example.com/resource
  3. 上传文件
    使用 -T 选项,这会将文件内容作为 PUT 请求的主体发送。
    curl -T filename.txt http://example.com/resource
  4. 设置请求头
    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:

    • 客户端可以提交部分数据,服务器根据提供的数据进行处理。例如,可以只提交用户的新邮箱地址,而不需要提供其他信息。

总结

特性PUTPOST
用途更新或替换资源创建新资源或提交数据
幂等性是(多次请求结果相同)否(多次请求可能产生不同结果)
数据要求必须提供完整资源可以只提供部分数据
响应状态码200 OK 或 204 No Content201 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

ESP-BLE
ESP
License:  CC BY 4.0
Share

Further Reading

Dec 8, 2024

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

Dec 19, 2023

蓝牙广播(Broadcast)

使用流程 定义 PHY地址 设定广播参数 定义广播内容 开启bt_controller/bluedroid 配置广播参数并执行 注意事项 待完善 代码示例 #include <stdlib.h> #include "freertos/FreeRTOS.h" #

OLDER

Lora

NEWER

ESP32(六) ESP-IDF Simple POST/GET

Recently Updated

  • ESP32(八) 简单的webserver
  • ESP32(七) NVS
  • ESP32(四) STA & AP
  • 多级菜单
  • ESP32(五) ESP32 OTA

Trending Tags

WCH Linux Elec freeRTOS STM ESP Flutter Others SwiftUI

Contents

©2025 松果工作室. Some rights reserved.

Using the Halo theme Chirpy