Die API-Definition kann nicht mit go-openapi/runtime/middleware geladen werden

王林
Freigeben: 2024-02-13 21:00:22
nach vorne
1141 Leute haben es durchsucht

无法使用 go-openapi/runtime/middleware 加载 API 定义

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.

Frageninhalt

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()
  }
Nach dem Login kopieren

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
Nach dem Login kopieren

Meine Frage ist, wie erkenne ich middleware 在当前目录中哪里可以找到 swagger.json, ob ich ein geklontes Projekt teste, bevor ich es bereitstelle?

Problemumgehung

Aus dem Quellcode müssen Sie Folgendes tun:

var sh http.Handler = middleware.SwaggerUI(middleware.SwaggerUIOpts{SpecURL: "./docs/swagger.json"}, nil)
Nach dem Login kopieren

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!

Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage