【发布时间】:2020-06-18 23:51:27
【问题描述】:
以前可能有人这样做过,但我似乎无法正确地提出问题以找到结果。我想从视图进行 AJAX 调用,但我不能直接从 javascript 调用外部 API,因为有一个我无法公开的密钥。我的想法是从页面调用另一个控制器操作,该操作调用我想从中获取数据的实际外部 REST API,然后将其作为 JSON 传递。我看到很多通过 C# 获取 JSON 并对其进行反序列化的示例,但在获取 JSON 然后返回它并从视图中使用它的地方并不多。任何帮助表示赞赏。
public JsonResult GetStuff()
{
HttpClient client = new HttpClient();
client.BaseAddress = new Uri(URL);
client.DefaultRequestHeaders.Accept.Add(
new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage response = client.GetAsync("Stuff/?Id=" + id).Result;
*code to take response and pass it on as a JSON that I can consume from Javascript
}
【问题讨论】:
-
你想调用其他控制器的动作吗?在您的视图控制器中,您应该能够通过获取由 IoC 注入的控制器并调用它来调用其他控制器的方法(操作)。如果您让下游操作不返回 JSON 而是返回对象,那么您就不需要搞乱反序列化。
-
其余 API 只是来自同一个 Web 应用程序的另一个控制器?还是外部 API?
-
它是一个外部API
-
所以你想要一个外部 API 的代理?
-
我也有同样的情况,来寻找答案。关键是通过不受干扰的方式传递结果,所以我猜你先
response.Content.ReadAsStringAsync然后return Content使用响应 ContentType?
标签: c# .net json api asp.net-core-3.1