如果没有关于我们API的有意义的文档以及对端点进行测试的能力,用户甚至都不会费心尝试使用它。解决方案是编写文档。但是,编写它可能要花费很多时间,否则可能会为我们的应用程序开发更多很棒的功能……那么,我们该怎么办?-我们生成了Swagger文档!

swagger库
net/http
go-swaggerswaggo/swaggo-swagger
字串

现在,对于批注/注释/文档字符串或任何您想调用的名称。实际上,在用于生成Swagger文档的特定API函数之前,实际上只是一堆注释。

mainmain

在上面,您可以看到General API Info的示例,其中包括名称,版本,许可证,基本URL等内容。您可以包含更多字段,并在此处列出了一些示例。

docs"/swagger/*any
mainv1.GET("/users/:id", apis.GetUser)
models.Usermodels
生成!
swag initmain.../cmd/blueprint/docs
maingo fmt
认证方式

此时,我们可以只运行应用程序,查看新的Swagger UI,然后将其命名为“一天”。但是缺少的一件事是对API的身份验证。如果您不对Swagger UI进行身份验证,那么任何人都可以访问他们想要的任何端点,这可能是非常不希望的,例如,如果您的数据可能被用户损坏。更糟糕的是,您可能会将数据库中的敏感信息公开到整个Internet。我认为这些足以为我们的API以及Swagger UI设置一些简单的身份验证,那么我们该怎么做呢?

首先,我们需要实际实现身份验证。这是GIN的情况,我们创建了一个非常简单的身份验证中间件,将其附加到路由器组:

通过将中间件附加到特定的组,我们可以控制什么是未认证的,什么是未认证的,这很重要,因为例如,我们不想对Swagger UI本身进行认证。

*rest-api*
mainsecurityDefinitions
Authorizationsecuritydefinitions.basic``securitydefinitions.oauth2

为了使Swagger能够识别出某些端点已通过身份验证,我们还需要向该API函数添加安全注释:

这是最后一步,现在(在重新生成Swagger文档之后),我们终于可以运行我们的应用程序了:

现在,我们可以在http//localhost:1234/swagger/index.html上打开Swagger UI并测试我们的文档!