【发布时间】:2017-08-24 18:52:00
【问题描述】:
我必须从我在 NET Core 中创建的 API 检索订单。
检索是在我的 MVC 控制器使用 GET 调用另一个 NET Core APP 的端点的操作中进行的。
API 端点如下:
API:
[HttpGet("orders/orderSearchParameters")]
public IActionResult Get(OrderSearchParameters orderSearchParameters)
{
var orders = MenuService.GetMenuOrders(new GetMenuOrdersRequest { From = orderSearchParameters.From, To = orderSearchParameters.To, FoodProviderId = orderSearchParameters.FoodProviderId }).Orders;
return Ok(orders);
}
我的 Web App MVC 控制器的操作必须调用该端点,为此代码如下:
public IActionResult GetOrders(OrderSearchParametersModel orderSearchParameters)
{
var uri = string.Format(ApiUri + "menus/orders/");
using (HttpClient httpClient = new HttpClient())
{
var response = httpClient.GetStringAsync(uri);
if (response.IsCompleted)
{
var orders = JsonConvert.DeserializeObject<List<OrderModel>>(response.Result);
return Ok(orders);
}
else
{
return BadRequest();
}
}
}
我找不到的是如何序列化 OrderSearchParametersModel 以使用 MVC 控制器中的 HttpClient 执行 GET 操作。
在附加的代码中,我在没有传入对象的情况下执行 GET。
如何通过 HttpClient 使用 GET 操作发送此对象?
【问题讨论】:
-
如果您将所有参数放在查询字符串中,它们将被转换为 OrderSearchParametersModel 但它们需要与此模型属性名称匹配。
-
使用 http GET 您无法发送对象。您可以发送的只是查询参数和标题字符串。通常,查询信息是通过@MichelAmorosa 提到的查询字符串发送的。
-
谢谢@MichelAmorosa。我想把它放在一个 aswer 中,我可以选择它
标签: c# asp.net-core-mvc http-get asp.net-core-webapi