Heim > Artikel > Backend-Entwicklung > Die API-Definition kann nicht mit go-openapi/runtime/middleware geladen werden
Während des Entwicklungsprozesses stößt der Editor von PHP Banana manchmal auf ein Problem: Er kann go-openapi/runtime/middleware nicht zum Laden von API-Definitionen verwenden. Dieses Problem kann den normalen Fortschritt des Projekts beeinträchtigen und muss daher rechtzeitig gelöst werden. Bevor wir dieses Problem lösen, müssen wir verstehen, was go-openapi/runtime/middleware ist und warum die API-Definition nicht geladen werden kann. In diesem Artikel erklären wir die Ursache dieses Problems im Detail und stellen Lösungen bereit, die jedem helfen, dieses Problem reibungslos zu lösen.
Ich verwende Swagger in Golangs http/net
以及 github.com/go-openapi/runtime/middleware
来探索 go
. Verwenden Sie den folgenden Code:
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() }
Wenn ich http://localhost:8088/docs
besuche, bekomme ich Folgendes:
Auf den ersten Blick net/http
库以及 middleware
无法找到相对于服务器根目录的 swagger.json
Datei. Ich habe diese Datei unter:
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
Meine Frage ist, wie erkenne ich middleware
在当前目录中哪里可以找到 swagger.json
, ob ich ein geklontes Projekt teste, bevor ich es bereitstelle?
Aus dem Quellcode müssen Sie Folgendes tun:
var sh http.Handler = middleware.SwaggerUI(middleware.SwaggerUIOpts{SpecURL: "./docs/swagger.json"}, nil)
Wenn specurl nicht angegeben ist, wird standardmäßig Folgendes verwendet:
/swagger.json
Das obige ist der detaillierte Inhalt vonDie API-Definition kann nicht mit go-openapi/runtime/middleware geladen werden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!