如何在 ASP.net Core 2 中创建动态 API

Ahm*_*sat 7 c# api controller asp.net-core-2.1

我需要知道如何通过调用另一个 API 然后传递and 来动态创建 API ,让我们假设我们有这个 API,就像这里显示的那样:[API name][API parameters]

调用接口

[HttpPost("GenerateApi")]
[ProducesResponseType(200)]
[ProducesResponseType(500)]
public IActionResult GenerateApi(RootObject ro)
{           
   //Here I need piece of code to create API dynamically
   return Ok(new { ro.apiName, ro.parameters });       
}
Run Code Online (Sandbox Code Playgroud)

以下是模型:

public class RootObject
{
   public string apiName { get; set; }
   public List<parameter> parameters { get; set; }
}

public class parameter
{
   public string parameterName { get; set; }
   public dynamic parameterType { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

现在需要做的是在控制器中创建动态 API

那么我们将创建 API,它们可以像这样从它们的 URL 调用

www.example.com/api/v1/[controller]/[apiName]/{[parameter1_value]}/{[parameter2_value]}
Run Code Online (Sandbox Code Playgroud)

你能否让我对此有所了解。

Ahm*_*sat 0

发现一些东西可以在 MVC 中提供帮助。如果其他人正在寻找这个,我需要覆盖 DefaultHttpControllerSelector。这是关于该主题的一篇非常好的文章:链接因此基本上对于上面提到的我的用例,我需要创建一个新的 AppDomain,在其中启动我的服务,并在运行时动态加载我的程序集。我最终需要覆盖 DefaultHttpControllerSelector 来捕获请求。当请求到达时,它就可以控制我要使用的控制器。在那里,我可以通过加载新程序集等动态更新控制器。需要注意的是,这是针对每个请求执行的,因此它很容易影响性能和内存。所以我将实现我自己的控制器缓存。