[英]Postman request to C# Web API gives a null property
我正在嘗試使用簡單的Web API方法。 當我POST
到這一點,我在Visual Studio中的調試器,該方法被擊中看看, cartItemId
正確填充。 但是我的第二個參數, quantity
為null
。
這是Web API:
[HttpPost]
[Route("api/Cart/{cartItemId}")]
[ResponseType("200", typeof(ResponseObject<CartItemDomainModel>)), ResponseType("500", typeof(Exception))]
public async Task<IHttpActionResult> UpdateQuantity(int cartItemId, [FromBody]string quantity)
{
var result = await _cartService.UpdateCartItemQuantity(cartItemId, Convert.ToInt32(quantity));
return ...;
}
這是郵遞員發送的:
POST /api/Cart/1 HTTP/1.1
Host: localhost:51335
Content-Type: application/json
Cache-Control: no-cache
Postman-Token: 5d4a40f1-794d-46fd-1776-2e0c77979f4a
{
"quantity":"5"
}
您發送的不是復雜的對象,而只是字符串。
在郵遞員中發送“ 5”而不是“數量”:“ 5”。
僅當您擁有一個具有稱為“ quantity”的屬性的模型類時,才進行后者。
當您發送具有application / json內容類型的POST請求,並且在action方法上具有原始參數時,您必須在主體中僅傳遞原始JSON字符串,而不是JSON Object。
因此,您的請求應如下所示:
POST /api/Cart/1 HTTP/1.1
Host: localhost:48552
Content-Type: application/json
Cache-Control: no-cache
Postman-Token: d5038684-3a5e-51f6-308c-399dda34457c
"5"
另外,如果您知道參數是一個int,則不需要傳遞字符串然后進行轉換,而是直接從ModelBinder以int形式獲取它。 因此,如果您重構操作以接收一個int參數:
[HttpPost]
[Route("api/Cart/{cartItemId}")]
[ResponseType("200", typeof(ResponseObject<CartItemDomainModel>)), ResponseType("500", typeof(Exception))]
public async Task<IHttpActionResult> UpdateQuantity(int cartItemId, [FromBody]int quantity)
{
var result = await _cartService.UpdateCartItemQuantity(cartItemId,quantity));
return ...;
}
您的請求應如下所示:
POST /api/Cart/1 HTTP/1.1
Host: localhost:48552
Content-Type: application/json
Cache-Control: no-cache
Postman-Token: d5038684-3a5e-51f6-308c-399dda34457c
5
希望這可以幫助!
POST方法不采用URL參數。 如果要使用POST方法,則應發送屬性對象。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.