Penjana Fizz OpenAPi Gin sedang menamakan semula jenis

WBOY
Lepaskan: 2024-02-08 20:54:16
ke hadapan
757 orang telah melayarinya

Gin 的 Fizz OpenAPi 生成器正在重命名类型

Kandungan soalan

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

Ini kaedah penangannya:

// Creates new user
func CreateUser(c *gin.Context, register *models.Register) error {
    ...

    return nil
}
Salin selepas log masuk

Masalahnya ialah dalam spesifikasi json yang dihasilkan, model "register" ditunjukkan sebagai "createuserinput":

Adakah cara untuk menyelesaikan masalah ini? Atau adakah ini normal?


Jawapan betul


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

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!

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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!