代码拉取完成,页面将自动刷新
package docs
import (
"bytes"
"fmt"
"log"
"reflect"
"regexp"
"strings"
"gitee.com/go-better/dev/encoding/jsondoc"
"gitee.com/go-better/dev/net/goa/convert"
"gitee.com/go-better/dev/type/strs"
"gitee.com/go-better/dev/type/structs"
)
func (r *Route) Title() string {
if f, ok := r.req.FieldByName("Title"); ok {
if comment := getComment(f.Tag); comment != "" {
return comment
}
return strings.TrimSpace(string(f.Tag))
}
return ""
}
func (r *Route) Desc(buf *bytes.Buffer) {
if f, ok := r.req.FieldByName("Desc"); ok {
if comment := getComment(f.Tag); comment != "" {
buf.WriteString(comment + "\n\n")
} else if desc := strings.TrimSpace(string(f.Tag)); desc != "" {
buf.WriteString(desc + "\n\n")
}
}
}
func (r *Route) Param(buf *bytes.Buffer, fullPath string) {
field, ok := r.req.FieldByName("Param")
if !ok {
return
}
buf.WriteString("\n## 路径中正则参数(子表达式)说明\n")
if desc := getComment(field.Tag); desc != "" {
buf.WriteString(desc + "\n\n")
}
names := regexp.MustCompile(fullPath).SubexpNames()[1:] // names[0] is always "".
for _, name := range names {
if name != "" {
if f, ok := field.Type.FieldByName(strs.FirstLetterToUpper(name)); ok {
buf.WriteString(fmt.Sprintf("- %s (%v): %s\n", name, f.Type, getComment(f.Tag)))
}
}
}
}
func (r *Route) Query(buf *bytes.Buffer) {
field, ok := r.req.FieldByName("Query")
if !ok {
return
}
buf.WriteString("\n## Query参数说明\n")
if desc := getComment(field.Tag); desc != "" {
buf.WriteString(desc + "\n\n")
}
buf.WriteString("```json5\n")
if b, err := jsondoc.MarshalIndent(
reflect.Zero(field.Type).Interface(), false, "", " ",
); err != nil {
log.Panic(err)
} else {
buf.Write(b)
}
buf.WriteString("\n```\n")
}
func (r *Route) Header(buf *bytes.Buffer) {
field, ok := r.req.FieldByName("Header")
if !ok {
return
}
buf.WriteString("\n## 请求头说明\n")
if desc := getComment(field.Tag); desc != "" {
buf.WriteString(desc + "\n\n")
}
convert.Traverse(reflect.New(field.Type).Elem(), true,
func(_ reflect.Value, f reflect.StructField) bool {
name, _ := structs.LookupTag(string(f.Tag), "header")
if name == "" {
name = f.Name
}
buf.WriteString(fmt.Sprintf("- %s (%v): %s\n", name, f.Type, getComment(f.Tag)))
return true
})
}
func (r *Route) Body(buf *bytes.Buffer) {
field, ok := r.req.FieldByName("Body")
if !ok {
return
}
buf.WriteString("\n## 请求体说明(application/json)\n")
if desc := getComment(field.Tag); desc != "" {
buf.WriteString(desc + "\n\n")
}
buf.WriteString("```json5\n")
if b, err := jsondoc.MarshalIndent(
reflect.Zero(field.Type).Interface(), false, "", " ",
); err != nil {
log.Panic(err)
} else {
buf.Write(b)
}
buf.WriteString("\n```\n")
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。