我需要幫助將多個值從我的 api 回傳到 httpclient 發布請求,但它回傳 null
api
[HttpPost("ShowUser")]
public (IEnumerable<UserInformation>, int) ShowUser([FromBody] Pagination pagination)
{ // retrieving data from database
var result = _showUsers.ShowManagerUsers(pagination.PageSize, pagination.skip, pagination.searchValue); // the output here is({System.Collections.Generic.List<Entities.UserInformation>}, 37) (note: 37 is the rows total)
Entities.PaginationResponse<IEnumerable<UserInformation>> paginationResponse = new Entities.PaginationResponse<IEnumerable<UserInformation>>
{
Data = result.Item1,
RowsCount = result.Item2
};
return (paginationResponse.Data, paginationResponse.RowsCount);
}
HttpClient 發布請求
public async Task<(List<TOut>, TOut)> PostGetListRequest<TIn, TOut>(TIn content, string uri, string token)
{
...
using (response = await client.PostAsync(uri, serialized))
{
if (response.StatusCode.ToString() == "OK")
{
responseBody = response.Content.ReadAsStringAsync().Result;
var result = JsonConvert.DeserializeObject<(List<TOut>, TOut)>(responseBody);
return (result.Item1, result.Item2);
}
...
}
}
輸出


知道我的代碼有什么問題嗎?
uj5u.com熱心網友回復:
1-您應該等待閱讀回應內容
responseBody = await response.Content.ReadAsStringAsync();
2-確保回應不為空。
3-我不鼓勵使用元組,因為它違反了面向物件和干凈的代碼實踐
uj5u.com熱心網友回復:
嘗試將您的 API 代碼更改為此。
[HttpPost("ShowUser")]
public ActionResult ShowUser([FromBody] Pagination pagination)
{ // retrieving data from database
var result = _showUsers.ShowManagerUsers(pagination.PageSize, pagination.skip, pagination.searchValue); // the output here is({System.Collections.Generic.List<Entities.UserInformation>}, 37) (note: 37 is the rows total)
Entities.PaginationResponse<IEnumerable<UserInformation>> paginationResponse = new Entities.PaginationResponse<IEnumerable<UserInformation>>
{
Data = result.Item1,
RowsCount = result.Item2
};
return Ok((paginationResponse.Data, paginationResponse.RowsCount));
}
如果這被設計為其他人將使用的 API,那么您真的不應該回傳匿名物件。我認為回傳包裝器模型或簡單地回傳您已經擁有的 pagingResponse 模型會是一個更好的主意。
[HttpPost("ShowUser")]
[ProducesResponseType(typeof(Entities.PaginationResponse<IEnumerable<UserInformation>>), StatusCodes.Status200OK)]
public ActionResult ShowUser([FromBody] Pagination pagination)
{ // retrieving data from database
var result = _showUsers.ShowManagerUsers(pagination.PageSize, pagination.skip, pagination.searchValue); // the output here is({System.Collections.Generic.List<Entities.UserInformation>}, 37) (note: 37 is the rows total)
Entities.PaginationResponse<IEnumerable<UserInformation>> paginationResponse = new Entities.PaginationResponse<IEnumerable<UserInformation>>
{
Data = result.Item1,
RowsCount = result.Item2
};
return Ok(paginationResponse);
}
讓我知道這是否不起作用或您是否需要其他任何東西。
快樂編碼!
uj5u.com熱心網友回復:
對于空回應正文,如果您的專案版本超出 ASP.NET Core 3.x,請務必添加 NewtonSoft 支持,查看


轉載請註明出處,本文鏈接:https://www.uj5u.com/net/475302.html標籤:C# asp.net-mvc asp.net 核心 asp.net-web-api 分页
上一篇:Net5剃須刀頁面與mvc
下一篇:將輸入值傳遞給asp-route
