Rumah >pembangunan bahagian belakang >Golang >Tidak dapat memuatkan definisi API menggunakan go-openapi/runtime/middleware
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.
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() }
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
Soalan saya ialah, bagaimana saya boleh memberitahu middleware
在当前目录中哪里可以找到 swagger.json
apabila menguji projek klon sebelum menggunakannya?
Melihat dari kod sumber, anda perlu melakukan perkara berikut:
var sh http.Handler = middleware.SwaggerUI(middleware.SwaggerUIOpts{SpecURL: "./docs/swagger.json"}, nil)
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!