Heim > Backend-Entwicklung > Golang > Gins Fizz OpenAPi-Generator benennt Typen um

Gins Fizz OpenAPi-Generator benennt Typen um

WBOY
Freigeben: 2024-02-08 20:54:16
nach vorne
802 Leute haben es durchsucht

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

Frageninhalt

Ich habe eine einfache API erstellt, die in Gin geschrieben ist. Ich verwende Fizz, um die OpenAPI-3-Spezifikation zu generieren. Das ist mein Post-Endpunkt:

// 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))
}
Nach dem Login kopieren

Dies ist die Handler-Methode:

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

    return nil
}
Nach dem Login kopieren

Das Problem besteht darin, dass in der generierten JSON-Spezifikation das Modell „register“ als „createuserinput“ angezeigt wird:

Gibt es eine Möglichkeit, dieses Problem zu lösen? Oder ist das normal?


Richtige Antwort


Gemäß der Implementierung wird der Schemaname durch die folgende Anweisung generiert: name := strings.title(op.id) + "input" (请参见下面的 23 Zeile):

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      }
Nach dem Login kopieren

Sie können fizz.id verwenden, um die Vorgangs-ID anzupassen, aber es gibt keine Möglichkeit, das Suffix input zu entfernen. Wenn Sie Schemanamen wirklich anders generieren möchten, müssen Sie das Repository forken und die Implementierung ändern.

Das obige ist der detaillierte Inhalt vonGins Fizz OpenAPi-Generator benennt Typen um. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage