swaggo / gin-swagger

gin middleware to automatically generate RESTful API documentation with Swagger 2.0.
MIT License
3.76k stars 270 forks source link

problems 404 with Multiple API #234

Open yuyinhao opened 2 years ago

yuyinhao commented 2 years ago

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。

tydice commented 8 months ago

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")))