当前位置: 首页 > 知识库问答 >
问题:

ASP.NET核心-大摇大摆-公共和私有大摇大摆页面

艾仲渊
2023-03-14
[ApiExplorerSettings(GroupName = SwaggerGroups.Public)]

理想情况下,我们将有一个显示所有标记为public的控制器/方法的大摇大摆的页面,以及另一个显示所有endpoint的密码安全endpoint。这可能吗?

共有1个答案

楚嘉胜
2023-03-14

首先,您的问题听起来好像没有正确地分离API,实际上应该是两个API(在微服务术语中是两个应用程序服务)。

因此,您也应该将其视为两个独立的API。

services.AddSwaggerGen(c =>
{
    c.SwaggerDoc("public", new OpenApiInfo { Title = "My Public API", Version = "v1" });
    c.SwaggerDoc("private", new OpenApiInfo { Title = "My Private API", Version = "v1" });
});

这将生成两个不同的OpenAPI(Swagger)规范。/api-docs/public/swagger.json/api-docs/private/swagger.json,它们可以托管在两个不同的UI应用程序中(一个受保护,另一个公开可用)

// Public Docs Api
app.UseSwaggerUI(c =>
{
    // we use absolute uri here, since the swagger.json is outside of this application
    c.SwaggerEndpoint("http://example.com/api-docs/public/swagger.json", "Public API");
});


// Private Docs App
app.UseSwaggerUI(c =>
{
    c.SwaggerEndpoint("http://example.com/api-docs/private/swagger.json", "Private API");
});

另一种方法是使用构建管道/持续集成系统。aspnetcore在5.x版本的库中提供了一个cli扩展,它可以作为构建脚本的一部分执行,以便在构建过程中生成swagger.json文件。

例如

dotnet swagger tofile --output ../swagger/myapi/private.json MyCompany.MyApplication.Mvc private
dotnet swagger tofile --output ../swagger/myapi/public.json MyCompany.MyApplication.Mvc public

并且有一个像这样的文档应用程序

// Private Docs App
app.UseSwaggerUI(c =>
{
    c.SwaggerEndpoint("http://example.com/api-docs/swagger/myapp/private.json", "Private API");
    c.SwaggerEndpoint("http://example.com/api-docs/swagger/myapp/public.json", "Public API");
});
 类似资料:
  • 我有一个java项目(tomcat webapp)和一些REST Api。我想为他们生成大摇大摆的文档。我从本教程(github)开始。我没有maven我们使用蚂蚁任务。我加入了swagger-annotations-1.5.0。jar和所有随swagger jaxrs jar 1.5.0版本附带的jar(如果有用的话,我可以包括一个完整的列表),我已经注释了一些方法,我有一个如下的配置类: }

  • 我们在我们的泽西应用程序中使用了@Role允许注释来限制用户对应用编程接口某些部分的访问。我们如何在SwaggerUI中显示这些信息? 到目前为止,我已经用@ApiOperation注释了方法以显示in/out参数,并尝试使用@Authorization/@AuthorizationScope,但我只为我们不使用的oauth2显示了它。最接近out case的是ApiKeyAuthDefiniti

  • 有没有人用spring-data-rest配置了swagger。我知道swagger有DocumentationConfig类,它扫描所有spring-mvc请求映射。但是,如何将其用于spring-data-rest,因为没有定义显式的请求映射。非常感谢在这方面的任何帮助。此外,我还想知道,是否有其他支持Spring-Data-REST的文档框架。

  • 我想从spring boot 2中切换到Micronaut框架。而我也在为那些大摇大摆的场景而挣扎。 在spring boot 2项目中,我有以下依赖项: 和swaggreconfig.class: 它可以很好地启动swagger-ui和spring boot 2应用程序。 我应该向maven添加哪些依赖项,我应该创建哪些类来为Micronaut项目获得相同的结果?

  • 我想大摇大摆地发布一个json正文,就像这样: 目前,我有这样的定义: 但是数据是在URL中发送的。这里是Swagger提供的生成的curl: 我知道<code>查询</code>关键字不好,但我没有找到POST JSON正文的方法。我尝试了<code>formData</code>,但没有成功。

  • 我一直在尝试使用Swagger生成REST API文档。 关注了链接,但无法使其生效。得到以下错误 下一步搜索并找到最接近我的问题的链接。再次遵循它,但仍然得到上述错误。我看不到swagger.json被生成。 版本信息 我是否错过了一些使其工作所需的配置?或者我需要更多的图书馆吗? 谢谢