.net core 使用相同的params.NET核心Web API将一个POST查询重定向到另一个POST查询

.net core 使用相同的params.NET核心Web API将一个POST查询重定向到另一个POST查询,.net-core,asp.net-core-webapi,.net Core,Asp.net Core Webapi,我有.NET核心Web API应用程序。我有3个API端点: 接受相同参数的“/a”、“/b”、“/c”(带文件的表单参数) 因此,用户确实请求“/a”,我检查了一些条件,需要将他重定向到“/b”或“/c”,并使用相同的(带有文件的表单数据)参数 重要的是:用户也可以单独执行“/b”或“/c”,而无需请求“/a”。此外,我还需要将用户重定向到“/a”中的“/b”或“/c”,这样就不需要等待来自“/a”的响应,或者换句话说,来自“/a”的响应=重定向到其他端点 有办法吗?您不能重定向到其他Web

我有.NET核心Web API应用程序。我有3个API端点: 接受相同参数的“/a”、“/b”、“/c”(带文件的表单参数)

因此,用户确实请求“/a”,我检查了一些条件,需要将他重定向到“/b”或“/c”,并使用相同的(带有文件的表单数据)参数

重要的是:用户也可以单独执行“/b”或“/c”,而无需请求“/a”。此外,我还需要将用户重定向到“/a”中的“/b”或“/c”,这样就不需要等待来自“/a”的响应,或者换句话说,来自“/a”的响应=重定向到其他端点


有办法吗?

您不能重定向到其他Web API端点,但可以执行以下操作之一:

  • 用户请求“/a”,您给他一个包含指向“/b”或“/c”的URL/URL的响应
  • 您已经实现了一个服务,并且您的控制器在逻辑上是干净的。因此,在控制器中,您只需检查应该调用“/a”、“/b”或“/c”的服务方法
编辑3:

我强烈推荐选项2,因为您提到有3个控制器操作具有相同的输入数据。因此,您最好的方法是只执行一个操作,并根据输入数据在其中调用您的服务方法
A
B
C

编辑2:
第一个选项伪代码:

[HttpPost(“/a”)]
公共操作结果验证(MyInputModel myModel)
{
MyResponse=新的MyResponse();
如果(myModel.MyProperty1==“某物”)
{
response.RedirectURL=”https://myurl/a"
}
else if(myModel.MyProperty1==“其他”)
{
response.RedirectURL=”https://myurl/b"
}
其他的
{
response.RedirectURL=”https://myurl/c"
}
返回Ok(响应);
}
编辑:
如何执行第二个选项的示例

ConfigureServices
方法中的
Startup.cs
文件中,注册如下服务:

services.AddTransient();
在控制器中,通过依赖项注入将其注入:

公共类BusinessController:ControllerBase
{
私有只读IMyService businessService;
公共业务控制器(IMyService businessService)
{
this.businessService=businessService;
}
//行动如下。。
//代码在这里
}
然后让我们在你想要的动作中说“/a”

[HttpPost(“/a”)]
公共操作结果验证(MyInputModel myModel)
{
如果(myModel.MyProperty1==“某物”)
{
var response=this.businessService.A(myModel)
}
else if(myModel.MyProperty1==“其他”)
{
var response=this.businessService.B(myModel)
}
其他的
{
var response=this.businessService.C(myModel)
}
}
不要忘记创建服务和实现

公共接口IMyService
{
响应模型A(MyInputModel myModel);
响应模型B(MyInputModel myModel);
响应模型C(MyInputModel myModel);
}
以及服务的实现:

公共类MyService:IMyService
{
在这里输入代码
}

您的意思是我需要使用中间件吗?你能给我一些实施的例子吗?编辑,如果你想要第一个选项的例子,写一篇评论是的,请给我第一个选项的例子。我认为第二个选项与我不匹配,因为用户也可以单独执行“/b”或“/c”。添加了更多的代码示例,我建议根据您提供的信息选择编辑3中提到的选项。希望这对你有帮助:)非常感谢:)。但我需要将用户重定向到“/a”操作中的“/b”或“/c”