Ai
1 Star 1 Fork 1

百家饭/apinx

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
encoding.go 1.83 KB
一键复制 编辑 原始数据 按行查看 历史
Liu Ming 提交于 2023-04-10 16:15 +08:00 . 增加对multipart/form的数据解析支持
package openapi
import (
"encoding/json"
"fmt"
"github.com/getkin/kin-openapi/openapi3"
)
//将参数按风格转换为可用于参数设置等的字符串,用在query、path、header、cookie等参数的设置
func EncodingParToString(def *openapi3.Schema, style string, value interface{}) string {
if style == "" {
if value == nil {
return ""
}
if def == nil {
return value.(string)
}
switch def.Type {
case "object":
case "array":
default:
//输入只有string和object、array三种
return value.(string)
}
} else {
switch style {
case "jsonString": //扩展类型,将object或者array生成json串行后的string
bts, _ := json.Marshal(value)
return string(bts)
}
return fmt.Sprintf("%v", value)
}
return ""
}
//根据输入进行请求的创建
func generateReqBySchema(handledMark map[string]interface{}, properties openapi3.Schemas,
encoding map[string]*openapi3.Encoding, mSel *OperationSelection,
parameters openapi3.Parameters, inputs map[string]interface{}, fn DefHandler) (hasChange bool, result map[string]interface{}, err error) {
var request = make(map[string]interface{})
for name, def := range properties {
var input = mSel.RequestBody.Inputs[name]
if input == nil {
input = new(ParameterSelection)
}
var result interface{}
result, err = GetValue(input,
name,
"request",
map[string]map[string]*ParameterSelection{
"parameter": mSel.Parameters.ToMap(parameters),
"request": mSel.RequestBody.Inputs,
}, inputs, handledMark, properties, encoding)
if err == NullValue {
continue
} else if err != nil {
return hasChange, request, err
} else {
var hasChangeSingle bool
hasChangeSingle, result, _ = fn.TransformValueVersa(def.Value, result)
hasChange = hasChange || hasChangeSingle
request[name] = result
}
}
return hasChange, request, err
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/bjf-fhe/apinx.git
git@gitee.com:bjf-fhe/apinx.git
bjf-fhe
apinx
apinx
v0.1.0

搜索帮助