asp.net - 从一个 WebAPI 重定向到另一个 WebAPI 并获取响应
问题描述
我想创建一个主/核心 api。想检查某个参数值并重定向到托管在同一服务器中的外部 api。我有一个带有 uri http://hello.test.com/auth的 api这需要两个身份验证参数用户名和密码。现在我添加第三个参数让我们说区域。
{
"Username":"jason",
"Password":"bourne",
"Area":"mars"
}
现在来到主 api,如果使用这个 uri 例如http://master.test.com/v1/mster并且我传递用户名、密码和区域,并且如果区域的值是让我们说“mars”,它应该调用具有 uri http://mars.test.com/auth的外部 mars api ,执行验证过程并在主 api 中返回响应。这可能吗?
使用我的 /auth api,我有这个控制器返回响应:
[HttpPost]
[Route(ApiEndpoint.AUTH)]
public HttpResponseMessage Auth(Login authBDTO)
{
if (!ModelState.IsValid)
return Request.CreateResponse(HttpStatusCode.BadRequest, ModelState);
using (AccountBusinessService accountService = new AccountBusinessService())
{
var result = accountService.Auth(authBDTO);
return Request.CreateResponse(HttpStatusCode.OK, result);
}
}
任何帮助表示赞赏。在这里找不到这个确切的场景。对不起,如果太天真了。
解决方案
找到了解决方法。这完成了工作。
[Route(ApiEndpoint.SAS)]
public IHttpActionResult esp(Login auth)
{
if (auth.Coop == "PMC")
{
var httpWebRequest = (HttpWebRequest)WebRequest.Create("http://localhost:60069/api/v1/auth");
httpWebRequest.ContentType = "application/json";
httpWebRequest.Method = "POST";
using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
{
string json = new JavaScriptSerializer().Serialize(new
{
Username = auth.UserName,
Password = auth.Password
});
streamWriter.Write(json);
}
var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
var result = streamReader.ReadToEnd();
dynamic obj = JsonConvert.DeserializeObject<ExpandoObject>(result);
obj.BaseUrl = "http://localhost:60069/api/v1";
return Ok(obj);
}
}
推荐阅读
- linux - 从 AWS VPC 镜像中解封装 VXLAN 包
- cakephp - cakephp 在布尔值上调用成员函数 patchEntities()
- laravel - POST http://127.0.0.1:8000/unlock 405(方法不允许)
- sql - Oracle CTE 在一台计算机上失败
- sql - T-SQL 将字符串从 ddmmyyyy 转换为 dd MMM yyyy
- d3.js - 如何使用 D3.js 删除功能删除项目
- python - Python中的字典值
- jquery - 为什么我的切换只在第一次工作?
- intellij-idea - IntelliJ Idea - 失去了选择 Spring Boot 作为运行配置的选项
- javascript - 如何在formdata上附加多个文件输入