You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何发送带JSON请求体的POST请求?无需Postman如何在URL传JSON体?

嘿,这两个问题都是开发中经常碰到的场景,我来给你详细拆解一下~

1. 如何发送带有JSON格式请求体的POST请求?

下面是几种常用的实现方式,覆盖终端、Python、JavaScript等常见开发场景:

用curl命令(终端直接执行)

这是调试API最常用的方式,不用写代码,终端里就能直接发送请求:

curl -X POST \
  https://your-api-endpoint.com/resource \
  -H "Content-Type: application/json" \
  -d '{
    "key1": "value1",
    "key2": "value2"
  }'
  • -X POST:明确指定请求方法为POST
  • -H "Content-Type: application/json":告诉服务器请求体是JSON格式,不然服务器可能解析出错
  • -d:后面跟着你的JSON请求体内容,注意格式要正确

用Python的requests库

如果用Python开发,requests库是最省心的选择,甚至不用手动把字典转成JSON字符串:

import requests

url = "https://your-api-endpoint.com/resource"
payload = {
    "key1": "value1",
    "key2": "value2"
}

# 直接用json参数会自动设置Content-Type头,省去手动加headers的麻烦
response = requests.post(url, json=payload)

# 查看响应结果
print(f"请求状态码: {response.status_code}")
print(f"响应内容: {response.json()}")

用JavaScript的fetch API(浏览器/Node.js)

前端或者Node.js环境下,用原生的fetch API就能搞定:

async function sendJsonPost() {
  const url = 'https://your-api-endpoint.com/resource';
  const payload = { key1: 'value1', key2: 'value2' };

  try {
    const response = await fetch(url, {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
      },
      body: JSON.stringify(payload), // 把JS对象转成标准JSON字符串
    });
    
    const result = await response.json();
    console.log('请求成功:', result);
  } catch (error) {
    console.error('请求失败:', error);
  }
}

sendJsonPost();

2. 已拥有POST请求的JSON格式请求体,无需使用Postman工具,如何在URL中传递该请求体?

首先得明确:POST请求的设计本意是把请求体放在HTTP的body部分,而不是URL里。URL里的是查询参数(query params),和请求体是完全不同的概念。但如果因为某些特殊需求非要通过URL传递,有两种可行的方式,但都不推荐用于生产环境(尤其是包含敏感数据的场景):

方式1:把JSON拆成单个查询参数

如果你的JSON结构很简单(没有嵌套对象、数组),可以把键值对直接转成URL的查询参数,比如:
原JSON:

{"key1": "value1", "key2": "value2"}

转成URL后:
https://your-api-endpoint.com/resource?key1=value1&key2=value2
这种方式的缺点很明显——无法处理复杂JSON(比如嵌套对象、数组),适用范围非常有限。

方式2:将JSON编码后作为单个查询参数值

把整个JSON字符串做URL编码,然后作为一个参数传递给服务器:

  1. 先把JSON字符串{"key1":"value1","key2":"value2"}做URL编码,得到:
    %7B%22key1%22%3A%22value1%22%2C%22key2%22%3A%22value2%22%7D
  2. 拼到URL里:
    https://your-api-endpoint.com/resource?data=%7B%22key1%22%3A%22value1%22%2C%22key2%22%3A%22value2%22%7D

重要注意事项:

  • URL有长度限制(不同浏览器和服务器的限制不同,一般在2KB-8KB之间),复杂的JSON很容易超出限制导致请求失败。
  • URL会被记录在服务器日志、浏览器历史里,如果包含敏感数据(比如密码、用户信息)会直接泄露。
  • 服务器端需要额外解码并解析这个参数,比如Python后端的处理代码:
from urllib.parse import unquote
import json

# 假设从请求中拿到的参数是encoded_data
encoded_data = request.args.get('data')
decoded_data = unquote(encoded_data)  # 解码URL编码的字符串
payload = json.loads(decoded_data)    # 解析成JSON对象
print(payload)  # 输出: {'key1': 'value1', 'key2': 'value2'}

内容的提问来源于stack exchange,提问作者Abhay Sarkar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:51:22