Maison > Article > développement back-end > Impossible de charger la définition de l'API à l'aide de go-openapi/runtime/middleware
Lors du processus de développement, l'éditeur de PHP Banana rencontre parfois un problème : il ne peut pas utiliser go-openapi/runtime/middleware pour charger les définitions d'API. Ce problème peut affecter le déroulement normal du projet, il doit donc être résolu à temps. Avant de résoudre ce problème, nous devons comprendre ce qu'est go-openapi/runtime/middleware et pourquoi la définition de l'API ne peut pas être chargée. Dans cet article, nous expliquerons en détail la cause de ce problème et proposerons des solutions pour aider tout le monde à résoudre ce problème en douceur.
J'utilise swagger dans Golang's http/net
以及 github.com/go-openapi/runtime/middleware
来探索 go
. Utilisez le code suivant :
func setupandrunhttpserver() { httpport := envstring("http_port", defaulthttpport) httpaddr := net.joinhostport("localhost", httpport) service := planting.newplantingservice() eps := endpoints.newendpointset(*service) httpservermux := transport.newhttphandler(eps) // setup the swagger docs and ui. var sh http.handler = middleware.swaggerui(middleware.swaggeruiopts{}, nil) httpservermux.handle("/docs", sh) // the http listener mounts the go kit http handler we created. httplistener, err := net.listen("tcp", httpaddr) if err != nil { os.exit(1) } // serve using the net/http.servermux creaded in transport package. err = http.serve(httplistener, httpservermux) if err != nil { os.exit(2) } defer httplistener.close() }
Lors de ma visite http://localhost:8088/docs
, j'obtiens ce qui suit :
À première vue, net/http
库以及 middleware
无法找到相对于服务器根目录的 swagger.json
fichier. J'ai ce fichier situé à l'adresse :
matthew.hoggan in ~/go/src/project/root on TemplateServer* ⚡ ls -l ./docs/swagger.json -rw-r--r-- 1 matthew.hoggan staff 3880 Nov 30 04:47 ./docs/swagger.json
Ma question est la suivante : comment puis-je savoir middleware
在当前目录中哪里可以找到 swagger.json
lorsque je teste un projet cloné avant de le déployer ?
En regardant le code source, vous devez procéder comme suit :
var sh http.Handler = middleware.SwaggerUI(middleware.SwaggerUIOpts{SpecURL: "./docs/swagger.json"}, nil)
Si specurl n'est pas spécifié, sa valeur par défaut est :
/swagger.json
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!