swaggo / gin-swagger

gin middleware to automatically generate RESTful API documentation with Swagger 2.0.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

problems 404 with Multiple API

yuyinhao opened this issue · comments

gin set
v1.GET("/swagger/public/*any", ginSwagger.WrapHandler(swaggerFiles.Handler, ginSwagger.InstanceName("public")))
v1.GET("/swagger/private/*any", ginSwagger.WrapHandler(swaggerFiles.Handler, ginSwagger.InstanceName("private")))

WrapHandler use swaggerFiles.Handler,set swaggerFiles.Handler.prefix =
once.Do(func() { handler.prefix = marcher[1] })
Because it is a singleton, Only the last handler.prefix will be saved。
When I call public and private instance, and call public again, it uses the handler.prefix of private。
results in a resource 404。

Here's a workaround solution.

var publicSwaggerFileHandler webdav.Handler
var privateSwaggerFileHandler webdav.Handler

func init() {
publicSwaggerFileHandler = *swaggerfiles.Handler
privateSwaggerFileHandler = *swaggerfiles.Handler
}

...

v1.GET("/swagger/public/*any", ginSwagger.WrapHandler(&publicSwaggerFileHandler, ginSwagger.InstanceName("public")))
v1.GET("/swagger/private/*any", ginSwagger.WrapHandler(&privateSwaggerFileHandler, ginSwagger.InstanceName("private")))