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

.NET中如何将原始请求转为JSON并调用REST POST API?

如何在自定义API中传递REST POST请求的JSON载荷

嘿,别担心,你的问题其实很清晰!先给你吃个定心丸:你贴的这个请求载荷本身就是JSON格式,只是有个小细节需要注意——" TestRequest"前面多了个空格,这可能会导致部分JSON解析器失败(Postman可能自动帮你处理了这个小问题,但自己写代码的时候一定要去掉)。

为什么Postman里直接粘贴就能用?

Postman会自动识别你粘贴的JSON内容,帮你设置正确的请求头Content-Type: application/json,并把内容作为请求体发送,所以能正常调用。而你自己写API的时候,需要手动完成这些步骤。

自定义API中传递载荷的核心步骤

  1. 修正JSON的合法性:把" TestRequest"改成"TestRequest",确保没有多余的空格或语法错误,合法的JSON结构如下:
{
  "request": {
    "TestRequest": {
      "OrderID": {
        "orderNumber": "12345",
        "category": "ABC"
      },
      "SecondCategory": "DEF"
    }
  }
}
  1. 设置请求头:必须添加Content-Type: application/json,告诉服务器你发送的是JSON格式的数据。
  2. 用对应语言的工具序列化JSON:推荐使用语言自带的JSON序列化工具(而不是手动拼接字符串),这样能避免语法错误,也更易维护。

常见编程语言的实现示例

1. Python(使用requests库)

import requests

# 构造符合要求的请求数据
payload = {
    "request": {
        "TestRequest": {
            "OrderID": {
                "orderNumber": "12345",
                "category": "ABC"
            },
            "SecondCategory": "DEF"
        }
    }
}

# requests库会自动序列化JSON并设置Content-Type头
response = requests.post("https://your-rest-service-url.com/your-endpoint", json=payload)

# 处理响应
print(f"响应状态码: {response.status_code}")
print(f"响应内容: {response.json()}")

2. JavaScript/Node.js(使用axios库)

const axios = require('axios');

const payload = {
    "request": {
        "TestRequest": {
            "OrderID": {
                "orderNumber": "12345",
                "category": "ABC"
            },
            "SecondCategory": "DEF"
        }
    }
};

axios.post('https://your-rest-service-url.com/your-endpoint', payload)
    .then(res => {
        console.log(`响应状态码: ${res.status}`);
        console.log(`响应内容:`, res.data);
    })
    .catch(err => console.error('请求失败:', err));

3. Java(使用Spring RestTemplate)

import org.springframework.web.client.RestTemplate;
import java.util.HashMap;
import java.util.Map;

public class RestApiClient {
    public static void main(String[] args) {
        RestTemplate restTemplate = new RestTemplate();
        String apiUrl = "https://your-rest-service-url.com/your-endpoint";

        // 构建嵌套的Map对应JSON结构
        Map<String, Object> orderId = new HashMap<>();
        orderId.put("orderNumber", "12345");
        orderId.put("category", "ABC");

        Map<String, Object> testRequest = new HashMap<>();
        testRequest.put("OrderID", orderId);
        testRequest.put("SecondCategory", "DEF");

        Map<String, Object> payload = new HashMap<>();
        payload.put("request", testRequest);

        // 发送POST请求,RestTemplate自动处理JSON序列化
        String response = restTemplate.postForObject(apiUrl, payload, String.class);
        System.out.println("响应内容: " + response);
    }
}

额外注意事项

  • 永远不要手动拼接JSON字符串,容易出现引号不匹配、逗号遗漏等低级错误,用语言自带的序列化工具更可靠。
  • 如果目标服务返回解析错误,可以用常见代码编辑器(比如VS Code)的JSON校验功能检查格式是否合法。
  • 确认目标REST服务确实支持application/json格式的请求体,根据你Postman的测试结果,这一点应该是没问题的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 10:13:01