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

Postman传递Guid与对象调用Web API时遇语法错误如何解决?

问题分析与解决方案

核心问题

  1. Web API 模型绑定限制:ASP.NET Web API 中,POST 方法无法通过 [FromBody] 同时绑定两个独立参数——HTTP 请求体是单一数据流,框架只能将其解析为一个对象或简单类型,无法拆分给两个参数。
  2. 请求体格式不合法:你提供的 JSON 内容不是有效结构,JSON 根节点必须是单个对象或数组,不能是两个用逗号分隔的独立值。

解决方案一:使用统一的 DTO 传递参数

这是规范且易维护的做法,创建包含所有参数的 DTO(数据传输对象),让框架一次性解析整个请求体。

步骤1:定义 DTO 类

public class UpdateUserRequestDto
{
    public Guid UserId { get; set; }
    public UserRequest UserInfo { get; set; }
}

// 补充 UserRequest 类定义(若未定义)
public class UserRequest
{
    public string Name { get; set; }
    public string City { get; set; }
}

步骤2:修改控制器方法

[HttpPost]
[Route("updateUser")]
public HttpResponseMessage UpdateUser([FromBody] UpdateUserRequestDto requestDto)
{
    // 业务逻辑:使用 requestDto.UserId 和 requestDto.UserInfo
    return Request.CreateResponse(HttpStatusCode.OK);
}

步骤3:Postman 合法请求体

{
  "userId": "27ab0d5a-4330-413c-bce1-21238dce44cb",
  "userInfo": {    
    "name": "regex2",
    "city": "sdsdsdssd"
  }
}

解决方案二:将 userId 放到 URL 路由中

如果不想新增 DTO,可以把 userId 作为路由参数传递,仅让 UserRequest 从请求体读取。

步骤1:修改控制器路由与方法

[HttpPost]
[Route("updateUser/{userId}")]
public HttpResponseMessage UpdateUser(Guid userId, [FromBody] UserRequest request)
{
    // 业务逻辑:使用 userId 和 request
    return Request.CreateResponse(HttpStatusCode.OK);
}

步骤2:Postman 请求配置

  • 请求 URL:http://your-api-url/updateUser/27ab0d5a-4330-413c-bce1-21238dce44cb
  • 请求体:
{    
  "name": "regex2",
  "city": "sdsdsdssd"
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 21:15:06