Maison > développement back-end > Golang > le corps du texte

Impossible de charger la définition de l'API à l'aide de go-openapi/runtime/middleware

王林
Libérer: 2024-02-13 21:00:22
avant
1131 Les gens l'ont consulté

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

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.

Contenu de la question

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()
  }
Copier après la connexion

Lors de ma visite http://localhost:8088/docs, j'obtiens ce qui suit :

À première vue, net/http 库以及 middleware 无法找到相对于服务器根目录的 swagger.jsonfichier. 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
Copier après la connexion

Ma question est la suivante : comment puis-je savoir middleware 在当前目录中哪里可以找到 swagger.json lorsque je teste un projet cloné avant de le déployer ?

Solution de contournement

En regardant le code source, vous devez procéder comme suit :

var sh http.Handler = middleware.SwaggerUI(middleware.SwaggerUIOpts{SpecURL: "./docs/swagger.json"}, nil)
Copier après la connexion

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!

source:stackoverflow.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!