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

REST API增改数据PostMan报错:未提供@Name参数求助

解决REST API中参数@Name未提供的报错问题

报错信息表明数据库执行参数化查询时,@Name参数未被正确传递到SQL命令中,这通常和模型绑定失败或参数空值处理不当有关,以下是具体解决方案:


1. 检查模型类定义

确保AddItem和UpdateItem类的属性名称与请求体字段匹配,且具备正确的可访问性:

public class AddItem
{
    public string Name { get; set; }
    public int Code { get; set; }
    public string Brand { get; set; }
    public int Price { get; set; }
    public int Quantity { get; set; }
}

public class UpdateItem
{
    public string Name { get; set; }
    public int Code { get; set; }
    public string Brand { get; set; }
    public int Price { get; set; }
    public int Quantity { get; set; }
}

如果PostMan发送的是驼峰命名字段(如"name"),需为属性添加特性指定映射名称(以System.Text.Json为例):

using System.Text.Json.Serialization;

public class AddItem
{
    [JsonPropertyName("name")]
    public string Name { get; set; }
    // 其他属性同理
}

2. 修复SQL参数的空值处理

当Name或Brand为null时,AddWithValue会生成未定义参数,导致SQL报错,需显式替换为DBNull.Value:

修改AddItem方法参数逻辑:

command.Parameters.AddWithValue("@Name", string.IsNullOrEmpty(additem.Name) ? DBNull.Value : (object)additem.Name);
command.Parameters.AddWithValue("@Code", additem.Code);
command.Parameters.AddWithValue("@Brand", string.IsNullOrEmpty(additem.Brand) ? DBNull.Value : (object)additem.Brand);
command.Parameters.AddWithValue("@Price", additem.Price);
command.Parameters.AddWithValue("@Quantity", additem.Quantity);

修改UpdateItem方法参数逻辑:

command.Parameters.AddWithValue("@Name", string.IsNullOrEmpty(Update.Name) ? DBNull.Value : (object)Update.Name);

3. 确保PostMan请求格式正确

POST请求(添加商品):

  • URL:http://你的API地址/api/[控制器名称]/additems
  • 请求方法:POST
  • 请求头:添加Content-Type: application/json
  • 请求体(Raw → JSON):
{
    "name": "测试商品",
    "code": 1001,
    "brand": "测试品牌",
    "price": 50,
    "quantity": 10
}

PUT请求(更新商品):

  • URL:http://你的API地址/api/[控制器名称]/updateitem/1(1为要更新的商品ID)
  • 请求方法:PUT
  • 请求头:添加Content-Type: application/json
  • 请求体(Raw → JSON):
{
    "name": "更新后商品",
    "code": 1001,
    "brand": "更新品牌",
    "price": 60,
    "quantity": 15
}

4. 优化接口返回值(可选)

将void返回类型改为IActionResult,便于返回HTTP状态码和调试信息:

[HttpPost]
[Route("/api/[controller]/additems")]
public IActionResult AddItem(AddItem additem)
{
    if (!ModelState.IsValid)
    {
        return BadRequest(ModelState); // 返回模型绑定错误详情
    }
    using (var connection = new SqlConnection(ConnectionString))
    {
        var query = "INSERT INTO Items (Name, Code, Brand, Price, Quantity) VALUES (@Name, @Code, @Brand, @Price, @Quantity)";
        
        using (var command = new SqlCommand(query, connection))
        {
            command.Parameters.AddWithValue("@Name", string.IsNullOrEmpty(additem.Name) ? DBNull.Value : (object)additem.Name);
            command.Parameters.AddWithValue("@Code", additem.Code);
            command.Parameters.AddWithValue("@Brand", string.IsNullOrEmpty(additem.Brand) ? DBNull.Value : (object)additem.Brand);
            command.Parameters.AddWithValue("@Price", additem.Price);
            command.Parameters.AddWithValue("@Quantity", additem.Quantity);
            
            connection.Open();
            var rowsAffected = command.ExecuteNonQuery();
            return rowsAffected > 0 ? Ok("商品添加成功") : StatusCode(500, "添加失败");
        }
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 18:24:57