From 3ebaffb3a2414ca1c38b3a95d6174eafa300b20e Mon Sep 17 00:00:00 2001 From: alswl Date: Wed, 16 Dec 2020 18:12:28 +0800 Subject: [PATCH 1/2] feat: add openapi operation id --- utils/api/definitions.go | 2 ++ utils/generators/swagger/generator.go | 1 + 2 files changed, 3 insertions(+) diff --git a/utils/api/definitions.go b/utils/api/definitions.go index 49c01ba1..297d8c88 100644 --- a/utils/api/definitions.go +++ b/utils/api/definitions.go @@ -60,6 +60,8 @@ type Definition struct { HTTPMethod string // HTTPCode is http success code. HTTPCode int + // OperationID is Unique string used to identify the operation. The OperationID MUST be unique among all operations described in the API. + OperationID string // Summary is a brief of this definition. Summary string // Description describes the API handler. diff --git a/utils/generators/swagger/generator.go b/utils/generators/swagger/generator.go index bc5c76b6..5a69eca1 100644 --- a/utils/generators/swagger/generator.go +++ b/utils/generators/swagger/generator.go @@ -433,6 +433,7 @@ func (g *Generator) operationFor(def *api.Definition) *spec.Operation { operation.Produces = append(operation.Produces, p) } } + operation.ID = def.OperationID operation.Summary = def.Summary if operation.Summary == "" { // Use function name as API summary. From 1f1d235cedbae55495bbee7ec160db78b6a23309 Mon Sep 17 00:00:00 2001 From: alswl Date: Wed, 16 Dec 2020 20:04:20 +0800 Subject: [PATCH 2/2] feat: add operation id and schema type --- definition/definition.go | 2 ++ service/rest/builder.go | 1 + utils/api/definitions.go | 1 + 3 files changed, 4 insertions(+) diff --git a/definition/definition.go b/definition/definition.go index f807e283..d2a5b44d 100644 --- a/definition/definition.go +++ b/definition/definition.go @@ -206,6 +206,8 @@ type Result struct { // Definition defines an API handler. type Definition struct { + // OperationID is Unique string used to identify the operation. The OperationID MUST be unique among all operations described in the API. + OperationID string // Method is definition method. Method Method // Consumes indicates how many content types the handler can consume. diff --git a/service/rest/builder.go b/service/rest/builder.go index eca99a18..204c9273 100644 --- a/service/rest/builder.go +++ b/service/rest/builder.go @@ -131,6 +131,7 @@ func (b *builder) addDescriptor(prefix string, consumes []string, produces []str func (b *builder) copyDefinition(d *definition.Definition, consumes []string, produces []string, tags []string) *definition.Definition { newOne := &definition.Definition{ Method: d.Method, + OperationID: d.OperationID, Summary: d.Summary, Function: d.Function, Description: d.Description, diff --git a/utils/api/definitions.go b/utils/api/definitions.go index 297d8c88..de127513 100644 --- a/utils/api/definitions.go +++ b/utils/api/definitions.go @@ -101,6 +101,7 @@ func NewDefinition(tc *TypeContainer, d *definition.Definition, apiStyle service Method: d.Method, HTTPMethod: service.HTTPMethodFor(d.Method), HTTPCode: code, + OperationID: d.OperationID, Summary: d.Summary, Description: d.Description, Tags: d.Tags,