MVC5 WebAPI 2创建无法从body([来自Body])获得价值



我创建了一个简单的Create Web API 2操作,该操作将从帖子主体中获取对象,然后将其设置为DAL层。但是,无论我使用Postman做什么将对象进入方法,它总是保持零。

模型看起来像这样:

namespace WebApi.Models
{
    using System;
    using System.Collections.Generic;
    public partial class Classes
    {
        public int Id { get; set; }
        public string ClassName { get; set; }
        public int MaxStudents { get; set; }
    }
}

我的控制器如下:

[HttpPost]
public IHttpActionResult CreateClass([FromBody] Classes classObj)
{
    if (classObj == null)
    {
        return BadRequest("missing parameters.");
    }
    var newClass = new Classes()
    {
        ClassName = classObj.ClassName,
        MaxStudents = classObj.MaxStudents
    };
    _context.Classes.Add(newClass);
    _context.SaveChanges();
    var newClassUrl = Url.Content("~/") + "/api/classes/";
    return Created(newClassUrl, newClass);
}

现在,当我使用Postman时,我尝试了两个选项。

选项1:

URL: http://localhost:53308/api/classes/
Headers: Content-Type: applications/json
[
  "classObj":  {
       ClassName = "test"
       MaxStudents = 100
  }
]

选项2:

URL: http://localhost:53308/api/classes/
Headers: Content-Type: applications/json
       ClassName = "test"
       MaxStudents = 100

,但在这两种情况下,classObj都保持空白,并且返回"丢失参数"。所以很明显,我在这里错过了一些东西。

我在做什么错?

您的有效载荷与动作的期望不符。

例如

[HttpPost]
public IHttpActionResult CreateClass([FromBody] Classes classObj) {
    //...
}

期望看起来像这样的JSON数据

{
    "ClassName": "test"
    "MaxStudents": 100
}

还鉴于张贴到操作中的模型与商店中添加的类型相同,实际上并不需要创建新实例。

[HttpPost]
public IHttpActionResult CreateClass([FromBody] Classes classObj) {
    if (classObj == null) {
        return BadRequest("missing parameters.");
    }
    _context.Classes.Add(classObj);
    _context.SaveChanges();
    var newClassUrl = Url.Content("~/") + "/api/classes/" + classObj.Id.ToSTring();
    return Created(newClassUrl, classObj);
}

最新更新