53 lines
1.9 KiB
Go
53 lines
1.9 KiB
Go
// Package openapi ...
|
|
//
|
|
// Description : openapi ...
|
|
//
|
|
// Author : go_developer@163.com<白茶清欢>
|
|
//
|
|
// Date : 2026-01-06 11:48
|
|
package openapi
|
|
|
|
import (
|
|
"encoding/json"
|
|
"fmt"
|
|
"net/http"
|
|
"testing"
|
|
"time"
|
|
|
|
"git.zhangdeman.cn/zhangdeman/api-doc/define"
|
|
)
|
|
|
|
func TestGenerate_AddApiDoc(t *testing.T) {
|
|
type Category struct {
|
|
ID int64 `json:"id" description:"分类ID" eg:"123" binding:"required,min=10,max=100"`
|
|
Name string `json:"name" description:"分类名称" eg:"baichaqinghuan" binding:"required,min=8"`
|
|
}
|
|
type Product struct {
|
|
ID int64 `json:"id,omitempty" description:"产品ID" example:"1001" required:"true" binding:"required"`
|
|
Name string `json:"name" description:"产品名称" example:"iPhone 13" minLength:"2" maxLength:"100" required:"true"`
|
|
Price float64 `json:"price" description:"价格" example:"6999.99" min:"0"`
|
|
Stock int `json:"stock" description:"库存" example:"100" min:"0"`
|
|
Tags []string `json:"tags" description:"标签"`
|
|
Attributes map[string]string `json:"attributes" description:"属性"`
|
|
CreatedAt time.Time `json:"created_at" description:"创建时间"`
|
|
UpdatedAt *time.Time `json:"updated_at,omitempty" description:"更新时间"`
|
|
Category *Category `json:"category,omitempty" description:"分类"`
|
|
}
|
|
instance := NewGenerate()
|
|
instance.AddApiDoc(define.UriConfig{
|
|
Path: "/a/b/c",
|
|
RequestMethod: http.MethodGet,
|
|
TagList: []string{"test"},
|
|
Desc: "测试接口",
|
|
}, Category{}, Product{})
|
|
instance.AddApiDoc(define.UriConfig{
|
|
Path: "/a/b/c",
|
|
RequestMethod: http.MethodPost,
|
|
TagList: []string{"test"},
|
|
Desc: "测试接口",
|
|
}, Category{}, Product{})
|
|
// 输出 JSON
|
|
data, _ := json.MarshalIndent(instance.doc, "", " ")
|
|
fmt.Println(string(data))
|
|
}
|