【问题标题】:Use C# Controller to get data from API使用 C# 控制器从 API 获取数据
【发布时间】:2016-11-24 19:28:33
【问题描述】:

我有一个 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 中获取数据?

【问题讨论】:

  • basepath/api/Calculation/Calculate?param=values
  • 如果您可以访问计算逻辑和计算逻辑/代码,为什么需要通过 API 调用,是否在同一个解决方案中?
  • 不,它们不在同一个解决方案中,它们在不同的解决方案中。 @PreetSingh
  • 但是您可以访问代码,公共库怎么样。尝试保存网络通话
  • @PreetSingh 我提出了同样的建议,但我得到的回应是我应该使用请求获取数据

标签: c# ajax asp.net-mvc httprequest http-get


【解决方案1】:

使用Httpclient 向您想要使用正确参数调用的url 发出请求。我猜你要调用的 url 是一个 web api/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 应用程序是客户端。

【讨论】:

  • 很高兴它有帮助。
猜你喜欢
  • 1970-01-01
  • 2021-06-20
  • 2020-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多