Rumah >pembangunan bahagian belakang >Golang >Penjana Fizz OpenAPi Gin sedang menamakan semula jenis
Saya mencipta api ringkas yang ditulis dalam gin. Saya menggunakan fizz untuk menjana spesifikasi openapi 3. Ini adalah titik akhir catatan saya:
// sets user route group func userroute(grp *fizz.routergroup) { // create new user grp.post("", []fizz.operationoption{ fizz.summary("creates new user and sends verification mail."), ... }, tonic.handler(handlers.createuser, 201)) }
Ini kaedah penangannya:
// Creates new user func CreateUser(c *gin.Context, register *models.Register) error { ... return nil }
Masalahnya ialah dalam spesifikasi json yang dihasilkan, model "register" ditunjukkan sebagai "createuserinput":
Adakah cara untuk menyelesaikan masalah ini? Atau adakah ini normal?
Mengikut pelaksanaan, nama skema dijana oleh pernyataan berikut: name := strings.title(op.id) + "input"
(请参见下面的 23
baris):
1 // setOperationParams adds the fields of the struct type t 2 // to the given operation. 3 func (g *Generator) setOperationParams(op *Operation, t, parent reflect.Type, allowBody bool, path string) error { 4 if t.Kind() != reflect.Struct { 5 return errors.New("input type is not a struct") 6 } 7 if err := g.buildParamsRecursive(op, t, parent, allowBody); err != nil { 8 return err 9 } 10 // Input fields that are neither path- nor query-bound 11 // have been extracted into the operation's RequestBody 12 // If the RequestBody is not nil, give it a name and 13 // move it to the openapi spec's components/schemas section 14 // Replace the RequestBody's schema with a reference 15 // to the named schema in components/schemas 16 if op.RequestBody != nil { 17 mt := tonic.MediaType() 18 if mt == "" { 19 mt = anyMediaType 20 } 21 sch := op.RequestBody.Content[mt].Schema 22 if sch != nil { 23 name := strings.Title(op.ID) + "Input" 24 g.api.Components.Schemas[name] = sch 25 op.RequestBody.Content[mt].Schema = &SchemaOrRef{Reference: &Reference{ 26 Ref: componentsSchemaPath + name, 27 }} 28 } 29 }
Anda boleh menggunakan fizz.id untuk menyesuaikan id operasi, tetapi tiada cara untuk mengalih keluar akhiran input
. Jika anda benar-benar mahu menjana nama skema secara berbeza, anda perlu memotong repositori dan mengubah suai pelaksanaan.
Atas ialah kandungan terperinci Penjana Fizz OpenAPi Gin sedang menamakan semula jenis. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!