api-doc/parser_test.go

101 lines
3.7 KiB
Go
Raw Normal View History

2024-07-19 18:01:14 +08:00
// Package api_doc ...
//
// Description : api_doc ...
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2024-07-19 17:52
package api_doc
import (
2025-02-10 11:15:29 +08:00
"encoding/json"
2024-07-19 18:01:14 +08:00
"fmt"
2025-02-14 11:30:12 +08:00
"git.zhangdeman.cn/gateway/api-doc/define"
2024-12-25 12:04:30 +08:00
"git.zhangdeman.cn/zhangdeman/serialize"
"reflect"
2024-07-19 18:01:14 +08:00
"testing"
)
type Meta struct {
}
2024-07-19 18:01:14 +08:00
// Test_parser_Openapi3 测试数据结构定义正确性
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 17:55 2024/7/19
func Test_parser_Openapi3(t *testing.T) {
2025-02-17 22:04:23 +08:00
type UserExt struct {
Job string `json:"job" dc:"job" binding:"required"`
Height string `json:"height" dc:"height" binding:"required"`
}
2025-02-12 21:55:35 +08:00
type User struct {
2025-02-14 11:30:12 +08:00
Meta `json:"-" deprecated:"false" path:"/user/detail" method:"POST" desc:"测试接口" tag:"用户,搜索" content_type:"application/json" output_content_type:"application/json"`
2025-02-15 13:13:01 +08:00
Name *string `json:"name" d:"zhang" desc:"用户姓名" binding:"required"`
Age string `json:"age" d:"18" desc:"年龄" binding:"required,oneof=12 13 18 90"`
2025-02-17 22:04:23 +08:00
UserExt
2025-02-14 11:30:12 +08:00
}
type UserDelete struct {
Meta `json:"-" deprecated:"false" path:"/user/detail" method:"DELETE" desc:"测试接口" tag:"用户,搜索" content_type:"application/json" output_content_type:"application/json"`
2025-02-13 16:03:31 +08:00
Name string `json:"name" d:"zhang" desc:"用户姓名" binding:"required"`
Age string `json:"age" d:"18" desc:"年龄" binding:"required,oneof=12 13 18 90"`
}
type UserPut struct {
Meta `json:"-" deprecated:"false" path:"/user/put/{put_user_id}" method:"PUT" desc:"测试接口" tag:"用户,搜索" content_type:"application/json" output_content_type:"application/json"`
Name string `json:"name" d:"zhang" desc:"用户姓名" binding:"required"`
Age string `json:"age" d:"18" desc:"年龄" binding:"required,oneof=12 13 18 90"`
}
type UserGet struct {
Meta `json:"-" deprecated:"false" path:"/user/detail/get/{put_user_id}" method:"GET" desc:"测试接口" tag:"用户,搜索" content_type:"application/json" output_content_type:"application/json"`
Name string `json:"name" d:"zhang" desc:"用户姓名" binding:"required"`
Age string `json:"age" d:"18" desc:"年龄" binding:"required,oneof=12 13 18 90"`
}
2025-02-14 18:22:53 +08:00
type UserHead struct {
Meta `json:"-" deprecated:"false" path:"/user/detail/head/{put_user_id}" method:"HEAD" desc:"测试接口" tag:"用户,搜索" content_type:"application/json" output_content_type:"application/json"`
Name string `json:"name" d:"zhang" desc:"用户姓名" binding:"required"`
Age string `json:"age" d:"18" desc:"年龄" binding:"required,oneof=12 13 18 90"`
}
2025-02-12 21:55:35 +08:00
type List struct {
2025-02-15 15:50:40 +08:00
Total int64 `json:"total" binding:"required"`
UserList []*User `json:"user_list"`
UserDetail *User `json:"user_detail" desc:"用户详情"`
}
2025-02-15 13:13:01 +08:00
var o *List
var f *User
var fd *UserDelete
var up *UserPut
var ug *UserGet
var uh *UserHead
2025-02-14 11:30:12 +08:00
g := NewOpenapiDoc(nil, []*define.ServerItem{
&define.ServerItem{
Url: "http://127.0.0.1/v1",
Description: "v1接口",
2025-02-14 18:22:53 +08:00
Variables: map[string]*define.ServerItemVariable{
"test": &define.ServerItemVariable{
Default: "123456",
Description: "1111",
Enum: nil,
},
},
2025-02-14 11:30:12 +08:00
},
&define.ServerItem{
Url: "http://127.0.0.1/v2",
Description: "v2接口",
Variables: nil,
},
})
2025-02-15 12:19:28 +08:00
g.AddApiFromInAndOut("", reflect.TypeOf(f), reflect.TypeOf(o))
g.AddApiFromInAndOut("", reflect.TypeOf(fd), reflect.TypeOf(o))
g.AddApiFromInAndOut("", reflect.TypeOf(up), reflect.TypeOf(o))
g.AddApiFromInAndOut("", reflect.TypeOf(ug), reflect.TypeOf(o))
g.AddApiFromInAndOut("", reflect.TypeOf(uh), reflect.TypeOf(o))
2025-02-10 11:15:29 +08:00
byteData, _ := json.Marshal(g.docData)
fmt.Println(string(byteData))
2024-07-19 18:01:14 +08:00
}
2024-12-24 10:34:28 +08:00
func TestParseForSwagger(t *testing.T) {
docUrl := "https://git.zhangdeman.cn/swagger.v1.json"
2024-12-25 12:04:30 +08:00
res, _ := Parse(docUrl)
serialize.JSON.ConsoleOutput(res)
2024-12-24 10:34:28 +08:00
}