使用 C# 控制器从 API 获取数据
Use C# Controller to get data from API
我有一个 API 可以 return 使用这种格式的数据:
http://etr.azurewebsites.net/api/calculation/calculation?currency=eur&edition=standart&systems=50&version=5
我想创建一个 HttpActionResult
,看起来如下所示:
public class CalculateController : ApiController
{
// GET: Calculate
[HttpGet]
public IHttpActionResult CalculatePrice([FromUri]string currency,
[FromUri]string edition = null,
[FromUri]int? systems = null,
[FromUri]string version = null)
{
//Code here
}
}
我的 RouteConfig
class 看起来像:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { action = "Index", id = UrlParameter.Optional }
);
}
我从中获取数据的控制器也如下所示:
public class CalculationController : ApiController
{
[HttpGet]
public async Task<IHttpActionResult> Calculate(.._parameters_..)
{
//Code here...
}
}
我如何请求从我想要的 URL 获取数据?
使用 Httpclient 向您想要使用正确参数调用的 url 发出请求。我猜你想调用的 url 是一个网络 api/ RESTful 网络服务。
using (var client = new HttpClient())
{
// New code:
client.BaseAddress = new Uri("Your API URL");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
}
根据 API 方法 ( GET/ POST ) 的类型,您将进行适当的调用。
您可以在此示例中找到更多信息。
http://www.asp.net/web-api/overview/advanced/calling-a-web-api-from-a-net-client
该示例有一个控制台应用程序作为客户端来调用 Web api,而在您的情况下,您的 MVC 应用程序是客户端。
我有一个 API 可以 return 使用这种格式的数据:
http://etr.azurewebsites.net/api/calculation/calculation?currency=eur&edition=standart&systems=50&version=5
我想创建一个 HttpActionResult
,看起来如下所示:
public class CalculateController : ApiController
{
// GET: Calculate
[HttpGet]
public IHttpActionResult CalculatePrice([FromUri]string currency,
[FromUri]string edition = null,
[FromUri]int? systems = null,
[FromUri]string version = null)
{
//Code here
}
}
我的 RouteConfig
class 看起来像:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { action = "Index", id = UrlParameter.Optional }
);
}
我从中获取数据的控制器也如下所示:
public class CalculationController : ApiController
{
[HttpGet]
public async Task<IHttpActionResult> Calculate(.._parameters_..)
{
//Code here...
}
}
我如何请求从我想要的 URL 获取数据?
使用 Httpclient 向您想要使用正确参数调用的 url 发出请求。我猜你想调用的 url 是一个网络 api/ RESTful 网络服务。
using (var client = new HttpClient())
{
// New code:
client.BaseAddress = new Uri("Your API URL");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
}
根据 API 方法 ( GET/ POST ) 的类型,您将进行适当的调用。 您可以在此示例中找到更多信息。
http://www.asp.net/web-api/overview/advanced/calling-a-web-api-from-a-net-client
该示例有一个控制台应用程序作为客户端来调用 Web api,而在您的情况下,您的 MVC 应用程序是客户端。