使用C#控制器从API获取数据

本文关键字:获取 数据 API 控制器 使用 | 更新日期: 2023-09-27 17:58:11

我有一个API,它将使用以下格式返回数据:

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类看起来像:

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获取数据?

使用C#控制器从API获取数据

使用Httpclient用正确的参数向您想要调用的url发出请求。我猜您要调用的url是一个webapi/RESTful web服务。

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应用程序就是客户端。