簡體   English   中英

對C#Web API的郵遞員請求提供了空屬性

[英]Postman request to C# Web API gives a null property

我正在嘗試使用簡單的Web API方法。 當我POST到這一點,我在Visual Studio中的調試器,該方法被擊中看看, cartItemId正確填充。 但是我的第二個參數, quantitynull

這是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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM