如何消费API和return格式的JSON内容?
How to consume a API and return the content in JSON format?
我正在努力解决以下问题:
我创建了一个包含以下项目的解决方案:1 个 MVC 前端和 2 个测试 API 用于测试我的后端 API 代理。
在我的前端,我调用我的 API 代理(它也是一个 API),它向我的 2 个测试 API 发送请求。我在我的 API Broker 中收到此请求的字符串格式的响应,我正在尝试将此 return 转换为 JSON 到我的前端,我如何使用此 api 和 return JSON 中对我前端的响应?看下面的代码:
前端调用我的 API 经纪人:
[HttpGet]
public async Task<ActionResult> getCall()
{
string url = "http://localhost:54857/";
string operation = "getClients";
using (var client = new HttpClient())
{
//get logged in userID
HttpContext context = System.Web.HttpContext.Current;
string sessionID = context.Session["userID"].ToString();
//Create request and add headers
client.BaseAddress = new Uri(url);
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
//Custom header
client.DefaultRequestHeaders.Add("loggedInUser", sessionID);
//Response
HttpResponseMessage response = await client.GetAsync(operation);
if (response.IsSuccessStatusCode)
{
string jsondata = await response.Content.ReadAsStringAsync();
return Content(jsondata, "application/json");
}
return Json(1, JsonRequestBehavior.AllowGet);
}
}
我的 API 经纪人使用了我的两个测试 API 之一:
[System.Web.Http.AcceptVerbs("GET")]
[System.Web.Http.HttpGet]
[System.Web.Http.Route("RedirectApi")]
public void getCall()
{
setVariables();
WebRequest request = WebRequest.Create(apiUrl);
HttpWebResponse response = null;
response = (HttpWebResponse)request.GetResponse();
using (Stream stream = response.GetResponseStream())
{
StreamReader sr = new StreamReader(stream);
var srResult = sr.ReadToEnd();
sr.Close();
//Return JSON object here!
}
}
我也担心我的前端需要一个 ActionResult 而不是 JSON 对象,我希望你能在这里找到一些建议。
提前致谢!
使用 HttpClient 发出请求,允许您将内容读取为字符串。您的 API 需要配置,以便允许 JSON 响应(默认行为),然后这里是发出请求并将其读取为 JSON 格式的字符串的示例(如果 API returns 一个 JSON body)。
HttpClient client = new HttpClient();
HttpResponseMessage response = await client.GetAsync("http://www.contoso.com/");
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();
我正在努力解决以下问题:
我创建了一个包含以下项目的解决方案:1 个 MVC 前端和 2 个测试 API 用于测试我的后端 API 代理。
在我的前端,我调用我的 API 代理(它也是一个 API),它向我的 2 个测试 API 发送请求。我在我的 API Broker 中收到此请求的字符串格式的响应,我正在尝试将此 return 转换为 JSON 到我的前端,我如何使用此 api 和 return JSON 中对我前端的响应?看下面的代码:
前端调用我的 API 经纪人:
[HttpGet]
public async Task<ActionResult> getCall()
{
string url = "http://localhost:54857/";
string operation = "getClients";
using (var client = new HttpClient())
{
//get logged in userID
HttpContext context = System.Web.HttpContext.Current;
string sessionID = context.Session["userID"].ToString();
//Create request and add headers
client.BaseAddress = new Uri(url);
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
//Custom header
client.DefaultRequestHeaders.Add("loggedInUser", sessionID);
//Response
HttpResponseMessage response = await client.GetAsync(operation);
if (response.IsSuccessStatusCode)
{
string jsondata = await response.Content.ReadAsStringAsync();
return Content(jsondata, "application/json");
}
return Json(1, JsonRequestBehavior.AllowGet);
}
}
我的 API 经纪人使用了我的两个测试 API 之一:
[System.Web.Http.AcceptVerbs("GET")]
[System.Web.Http.HttpGet]
[System.Web.Http.Route("RedirectApi")]
public void getCall()
{
setVariables();
WebRequest request = WebRequest.Create(apiUrl);
HttpWebResponse response = null;
response = (HttpWebResponse)request.GetResponse();
using (Stream stream = response.GetResponseStream())
{
StreamReader sr = new StreamReader(stream);
var srResult = sr.ReadToEnd();
sr.Close();
//Return JSON object here!
}
}
我也担心我的前端需要一个 ActionResult 而不是 JSON 对象,我希望你能在这里找到一些建议。
提前致谢!
使用 HttpClient 发出请求,允许您将内容读取为字符串。您的 API 需要配置,以便允许 JSON 响应(默认行为),然后这里是发出请求并将其读取为 JSON 格式的字符串的示例(如果 API returns 一个 JSON body)。
HttpClient client = new HttpClient();
HttpResponseMessage response = await client.GetAsync("http://www.contoso.com/");
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();