我创建了一个简单的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);
}