如何在 ASP.net 核心 2 中创建动态 API
How can I create dynamic API's in ASP.net Core 2
我需要知道如何通过调用另一个 API 然后传递 [API name]
和 [=16= 来动态地创建 API 的 ],让我们假设我们有这个 API,如下所示:
[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 });
}
以下是模型:
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; }
}
现在需要做的是在控制器中创建动态API。
然后我们将创建 API 它们可以从它们的 URL 中调用,就像这样
www.example.com/api/v1/[controller]/[apiName]/{[parameter1_value]}/{[parameter2_value]}
能否请您提供一些见解。
发现一些东西可以在 MVC 中提供帮助。如果其他人正在寻找这个,我需要覆盖 DefaultHttpControllerSelector。这是一篇关于该主题的非常好的文章:link 所以基本上对于我上面提到的用例,我需要创建一个新的 AppDomain,在其中启动我的服务,并在运行时动态加载我的程序集。我最终需要覆盖 DefaultHttpControllerSelector 来捕获请求。当请求到达时,它就可以控制我要使用哪个控制器。在那里我可以通过加载新程序集等动态更新控制器。要注意的主要事情是这是针对每个请求执行的,因此它很容易影响性能和内存。所以我会实现自己的控制器缓存。
在这篇有用的文章中找到了解决方案 Here,用于在 .net 核心中生成动态控制器。
我需要知道如何通过调用另一个 API 然后传递 [API name]
和 [=16= 来动态地创建 API 的 ],让我们假设我们有这个 API,如下所示:
[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 });
}
以下是模型:
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; }
}
现在需要做的是在控制器中创建动态API。
然后我们将创建 API 它们可以从它们的 URL 中调用,就像这样
www.example.com/api/v1/[controller]/[apiName]/{[parameter1_value]}/{[parameter2_value]}
能否请您提供一些见解。
发现一些东西可以在 MVC 中提供帮助。如果其他人正在寻找这个,我需要覆盖 DefaultHttpControllerSelector。这是一篇关于该主题的非常好的文章:link 所以基本上对于我上面提到的用例,我需要创建一个新的 AppDomain,在其中启动我的服务,并在运行时动态加载我的程序集。我最终需要覆盖 DefaultHttpControllerSelector 来捕获请求。当请求到达时,它就可以控制我要使用哪个控制器。在那里我可以通过加载新程序集等动态更新控制器。要注意的主要事情是这是针对每个请求执行的,因此它很容易影响性能和内存。所以我会实现自己的控制器缓存。
在这篇有用的文章中找到了解决方案 Here,用于在 .net 核心中生成动态控制器。