feat: 完胜增加schema逻辑

This commit is contained in:
2026-01-06 11:57:02 +08:00
parent 2f4e6851f3
commit c1d5dd89d4
3 changed files with 82 additions and 6 deletions

View File

@@ -8,6 +8,8 @@
package openapi
import (
"reflect"
"git.zhangdeman.cn/zhangdeman/consts"
"github.com/getkin/kin-openapi/openapi3"
)
@@ -17,7 +19,7 @@ func NewGenerate() *Generate {
return &Generate{
doc: &openapi3.T{
Extensions: map[string]any{},
OpenAPI: "openapi",
OpenAPI: "3.1.0",
Components: &openapi3.Components{
Extensions: map[string]any{},
Origin: &openapi3.Origin{
@@ -106,5 +108,34 @@ type Generate struct {
// AddApiDoc 添加接口文档
func (g *Generate) AddApiDoc(request any, response any) error {
return nil
var (
err error
requestType reflect.Type
responseType reflect.Type
ok bool
)
// 初始化请求数据与响应数据类型
if requestType, ok = request.(reflect.Type); !ok {
requestType = reflect.TypeOf(request)
if requestType.Kind() == reflect.Ptr {
requestType = requestType.Elem()
}
}
if responseType, ok = response.(reflect.Type); !ok {
responseType = reflect.TypeOf(response)
if responseType.Kind() == reflect.Ptr {
responseType = responseType.Elem()
}
}
requestTypeStr := requestType.String()
if _, exist := g.doc.Components.Schemas[requestTypeStr]; !exist {
g.doc.Components.Schemas[requestTypeStr] = GenerateOpenAPISchema(requestType)
}
responseTypeStr := requestType.String()
if _, exist := g.doc.Components.Schemas[responseTypeStr]; !exist {
g.doc.Components.Schemas[responseTypeStr] = GenerateOpenAPISchema(responseType)
}
return err
}