[英]ASP.NET Web API 2 - how to POST?
我已使用腳手架為ASP.NET中的Web API 2生成Controller類。
我想從瀏覽器發布對象。 這是運行的生成方法:
// 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"
添加"something"
以使其正確序列化? 輸入方法后, myObject
是一個有效的對象,所有字段均設置為null。 我不知道該序列化發生在堆棧中的什么地方,所以我不確定如何修改我的post
以進行修復。
您需要稍微改變一下結構。
首先,/ 5表示ID為5,這與您的方法所期望的復合對象沒有任何意義。
其次,您無需使用“ =”手動指定任何URL參數化。 如果正確構造對象,jQuery和WebAPI都將為您處理這些部分。 當反序列化復雜對象時,WebAPI 2的功能要比其前身強大得多。 只需發布對象。
$.post("http://localhost:2239/api/UrlVisits", {id:1, name:"test name"});
最后,您可以使用[FromBody]
屬性來指定您的對象將被發布在表單主體上。
[ResponseType(typeof(MyObject))]
public async Task<IHttpActionResult> PostMyObject([FromBody]MyObject myObject)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.