Rumah > pembangunan bahagian belakang > Golang > Tidak dapat memuatkan definisi API menggunakan go-openapi/runtime/middleware

Tidak dapat memuatkan definisi API menggunakan go-openapi/runtime/middleware

王林
Lepaskan: 2024-02-13 21:00:22
ke hadapan
1223 orang telah melayarinya

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

Semasa proses pembangunan, editor PHP Banana kadangkala menghadapi masalah: ia tidak boleh menggunakan go-openapi/runtime/middleware untuk memuatkan definisi API. Masalah ini mungkin menjejaskan kemajuan biasa projek, jadi ia perlu diselesaikan tepat pada masanya. Sebelum menyelesaikan masalah ini, kita perlu memahami apa itu go-openapi/runtime/middleware dan mengapa takrifan API tidak boleh dimuatkan. Dalam artikel ini, kami akan menerangkan punca masalah ini secara terperinci dan menyediakan penyelesaian untuk membantu semua orang menyelesaikan masalah ini dengan lancar.

Kandungan soalan

Saya menggunakan swagger dalam http/net 以及 github.com/go-openapi/runtime/middleware 来探索 go golang. Gunakan kod berikut:

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()
  }
Salin selepas log masuk

Apabila saya melawat http://localhost:8088/docs Saya mendapat perkara berikut:

Pada pandangan pertama, net/http 库以及 middleware 无法找到相对于服务器根目录的 swagger.json fail. Saya mempunyai fail ini terletak di:

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
Salin selepas log masuk

Soalan saya ialah, bagaimana saya boleh memberitahu middleware 在当前目录中哪里可以找到 swagger.json apabila menguji projek klon sebelum menggunakannya?

Penyelesaian

Melihat dari kod sumber, anda perlu melakukan perkara berikut:

var sh http.Handler = middleware.SwaggerUI(middleware.SwaggerUIOpts{SpecURL: "./docs/swagger.json"}, nil)
Salin selepas log masuk

Jika specurl tidak dinyatakan, ia lalai kepada: /swagger.json

Atas ialah kandungan terperinci Tidak dapat memuatkan definisi API menggunakan go-openapi/runtime/middleware. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan