ASP.NET Web API 2 - 如何POST?
ASP.NET Web API 2 - how to POST?
我在 ASP.NET.
中使用脚手架为 Web API 2 生成了控制器 class
我想 post 来自浏览器的对象。这是生成的方法 运行:
// POST: api/MyObjects
[ResponseType(typeof(MyObject))]
public async Task<IHttpActionResult> PostMyObject(MyObject myObject)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
db.MyObjects.Add(myObject);
try
{
await db.SaveChangesAsync();
}
catch (DbUpdateException)
{
if (MyObjectExists(myObject.Id))
{
return Conflict();
}
else
{
throw;
}
}
return CreatedAtRoute("DefaultApi", new { id = myObject.Id }, myObject);
}
我正在尝试从 javascript/jquery:
调用它
$.post("http://localhost:2239/api/UrlVisits/5", "=" + "something");
我的问题是,我要为 "something"
输入什么才能正确序列化它?输入方法时,myObject
是一个有效对象,所有字段都设置为空。我不知道这个序列化发生在堆栈的哪个位置,所以我不确定如何修改我的 post
来修复它。
您需要稍微更改一下结构。
首先,/5 表示 ID 为 5,这对于您的方法期望的复合对象没有意义。
其次,您不需要使用“=”手动指定任何 URL 参数化。如果您正确构建对象,jQuery 和 WebAPI 都会为您处理这些部分。在反序列化复杂对象方面,WebAPI 2 比它的前身强大得多。只需 post 对象。
$.post("http://localhost:2239/api/UrlVisits", {id:1, name:"test name"});
最后,您可以使用 [FromBody]
属性指定您的对象将 post 显示在表单主体上。
[ResponseType(typeof(MyObject))]
public async Task<IHttpActionResult> PostMyObject([FromBody]MyObject myObject)
我在 ASP.NET.
中使用脚手架为 Web API 2 生成了控制器 class我想 post 来自浏览器的对象。这是生成的方法 运行:
// POST: api/MyObjects
[ResponseType(typeof(MyObject))]
public async Task<IHttpActionResult> PostMyObject(MyObject myObject)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
db.MyObjects.Add(myObject);
try
{
await db.SaveChangesAsync();
}
catch (DbUpdateException)
{
if (MyObjectExists(myObject.Id))
{
return Conflict();
}
else
{
throw;
}
}
return CreatedAtRoute("DefaultApi", new { id = myObject.Id }, myObject);
}
我正在尝试从 javascript/jquery:
调用它$.post("http://localhost:2239/api/UrlVisits/5", "=" + "something");
我的问题是,我要为 "something"
输入什么才能正确序列化它?输入方法时,myObject
是一个有效对象,所有字段都设置为空。我不知道这个序列化发生在堆栈的哪个位置,所以我不确定如何修改我的 post
来修复它。
您需要稍微更改一下结构。
首先,/5 表示 ID 为 5,这对于您的方法期望的复合对象没有意义。
其次,您不需要使用“=”手动指定任何 URL 参数化。如果您正确构建对象,jQuery 和 WebAPI 都会为您处理这些部分。在反序列化复杂对象方面,WebAPI 2 比它的前身强大得多。只需 post 对象。
$.post("http://localhost:2239/api/UrlVisits", {id:1, name:"test name"});
最后,您可以使用 [FromBody]
属性指定您的对象将 post 显示在表单主体上。
[ResponseType(typeof(MyObject))]
public async Task<IHttpActionResult> PostMyObject([FromBody]MyObject myObject)