Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在可能的端点上大摇大摆地展开_C#_Entity Framework_Swagger_Openapi_Swagger Codegen - Fatal编程技术网

C# 在可能的端点上大摇大摆地展开

C# 在可能的端点上大摇大摆地展开,c#,entity-framework,swagger,openapi,swagger-codegen,C#,Entity Framework,Swagger,Openapi,Swagger Codegen,我目前正在使用Swagger公开我的所有端点,但这些端点当前的格式为: /get/{name},/put/{name},其中名称只能是数据库中的名称 是否有可能使swagger扩展通用API定义以包含所有可能的API调用,即所有可能的名称?我假设您使用的是.NET Core。 我还没有测试过这个解决方案,但希望它在正确的轨道上 在Startup类中,您可能正在ConfigureServices方法以及数据库上下文中注册Swagger 您需要在AddSwaggerGen中添加一行以注册自定义筛选器

我目前正在使用Swagger公开我的所有端点,但这些端点当前的格式为:
/get/{name},/put/{name}
,其中名称只能是数据库中的名称


是否有可能使swagger扩展通用API定义以包含所有可能的API调用,即所有可能的名称?

我假设您使用的是.NET Core。
我还没有测试过这个解决方案,但希望它在正确的轨道上

Startup
类中,您可能正在
ConfigureServices
方法以及数据库上下文中注册Swagger

您需要在
AddSwaggerGen
中添加一行以注册自定义筛选器

public void配置服务(IServiceCollection服务)
{
services.AddDbContext();
services.AddSwaggerGen(c=>
{
c、 SwaggerDoc(“v1”,新的openapinfo{Title=“myapi”,Version=“v1”});
//自定义筛选器(也可以是SchemaFilter)
c、 参数过滤器();
});
}
以下是
CustomParametersFilter
类:

公共类CustomParametersFilter:IPParameterFilter
{
私有只读YourContext数据库上下文;
公共CustomParametersFilter(YourContext dbContext)
{
//在这里,您还可以访问IServiceProvider或任何依赖项
this.dbContext=dbContext;
}
public void Apply(IPParameter参数、ParameterFilterContext上下文)
{
if(parameter.Name==“some_Name”)
{
//使用dbContext检索您的值
列出有效值;
// ...
parameter.Description=string.Join(“,”,有效值);
}
}
}

CustomParametersFilter
的代码是一个起点,但可以根据需要进行调整
IPParameter
(和
OpenApiParameter
)提供了更多选项。

您使用的是ASP.NET Core吗?你在用虚张声势的皮带扣吗?很可能您必须在XML注释中硬编码可能的名称。我看不出有任何方法可以做到这一点,除非在从数据库读取数据后使用另一个工具来更新您的swagger文件…我看到我可以作为中间件来做这件事?但是dbcontext和中间件呢?您应该能够将中间件添加到
Startup
类的
Configure
方法中。在这里,您应该可以访问
IServiceProvider
或其他注入依赖项来解析DbContext(如果DbContext已在您的
ConfigureServices
方法中正确注册)。我不太清楚您希望我如何解决这个问题@LucasS.看我的答案,我试图解释我在上一篇评论中的意思。我从根提供者那里得到了无法解析作用域服务“Database.Data.SchemaContext”。您是否在
ConfigureServices
方法中注册了此
SchemaContext
类的任何实现?是的-它已按您上面所述注册。。当我调用我的swagger端点swagger/v1/swagger.json
无法从根提供程序解析作用域服务“Database.Data.SchemaContext”时发生错误。
是我得到的错误