支持gin请求表单解析
This commit is contained in:
parent
0e469953bd
commit
0e14eb64d1
54
request/content_type.go
Normal file
54
request/content_type.go
Normal file
@ -0,0 +1,54 @@
|
||||
// Package request ...
|
||||
//
|
||||
// Description : request ...
|
||||
//
|
||||
// Author : go_developer@163.com<白茶清欢>
|
||||
//
|
||||
// Date : 2022-07-03 00:52
|
||||
package request
|
||||
|
||||
import (
|
||||
"strings"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
// contentType 请求类型相关处理
|
||||
//
|
||||
// Author : go_developer@163.com<白茶清欢>
|
||||
//
|
||||
// Date : 00:53 2022/7/3
|
||||
type contentType struct {
|
||||
}
|
||||
|
||||
// IsJson 请求方式是否为JSON
|
||||
//
|
||||
// Author : go_developer@163.com<白茶清欢>
|
||||
//
|
||||
// Date : 00:35 2022/7/3
|
||||
func (ct *contentType) IsJson(ctx *gin.Context) bool {
|
||||
return strings.Contains(ct.Get(ctx), "json")
|
||||
}
|
||||
|
||||
// IsFormURLEncoded 请求方式是否为 x-www-form-urlencoded
|
||||
//
|
||||
// Author : go_developer@163.com<白茶清欢>
|
||||
//
|
||||
// Date : 00:36 2022/7/3
|
||||
func (ct *contentType) IsFormURLEncoded(ctx *gin.Context) bool {
|
||||
return strings.Contains(ct.Get(ctx), "x-www-form-urlencoded")
|
||||
}
|
||||
|
||||
// Get 获取请求类型
|
||||
//
|
||||
// Author : go_developer@163.com<白茶清欢>
|
||||
//
|
||||
// Date : 00:39 2022/7/3
|
||||
func (ct *contentType) Get(ctx *gin.Context) string {
|
||||
contentType := strings.ToLower(ctx.ContentType())
|
||||
if len(contentType) == 0 {
|
||||
// 请求不传type默认为 x-www-form-urlencoded
|
||||
contentType = "application/x-www-form-urlencoded"
|
||||
}
|
||||
return contentType
|
||||
}
|
55
request/form.go
Normal file
55
request/form.go
Normal file
@ -0,0 +1,55 @@
|
||||
// Package request ...
|
||||
//
|
||||
// Description : request ...
|
||||
//
|
||||
// Author : go_developer@163.com<白茶清欢>
|
||||
//
|
||||
// Date : 2022-07-03 00:33
|
||||
package request
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"net/http"
|
||||
"strings"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
// form 表单相关操作
|
||||
//
|
||||
// Author : go_developer@163.com<白茶清欢>
|
||||
//
|
||||
// Date : 00:51 2022/7/3
|
||||
type form struct {
|
||||
}
|
||||
|
||||
// ParseRequestForm 解析请求表单
|
||||
//
|
||||
// Author : go_developer@163.com<白茶清欢>
|
||||
//
|
||||
// Date : 00:34 2022/7/3
|
||||
func (f *form) ParseRequestForm(ctx *gin.Context, receiver interface{}) error {
|
||||
method := strings.ToUpper(ctx.Request.Method)
|
||||
if method == http.MethodGet ||
|
||||
method == http.MethodPatch ||
|
||||
method == http.MethodTrace ||
|
||||
method == http.MethodConnect ||
|
||||
method == http.MethodOptions {
|
||||
return ctx.ShouldBindQuery(receiver)
|
||||
}
|
||||
|
||||
if method == http.MethodPost ||
|
||||
method == http.MethodPut ||
|
||||
method == http.MethodDelete {
|
||||
if ContentType.IsJson(ctx) {
|
||||
return ctx.ShouldBindJSON(receiver)
|
||||
}
|
||||
|
||||
if ContentType.IsFormURLEncoded(ctx) {
|
||||
return ctx.ShouldBind(receiver)
|
||||
}
|
||||
|
||||
return errors.New(ctx.ContentType() + " is not support")
|
||||
}
|
||||
return errors.New(method + " : request method is not support")
|
||||
}
|
20
request/init.go
Normal file
20
request/init.go
Normal file
@ -0,0 +1,20 @@
|
||||
// Package request ...
|
||||
//
|
||||
// Description : request ...
|
||||
//
|
||||
// Author : go_developer@163.com<白茶清欢>
|
||||
//
|
||||
// Date : 2022-07-03 00:52
|
||||
package request
|
||||
|
||||
var (
|
||||
// Form 表单相关操作
|
||||
Form *form
|
||||
// ContentType 请求类型
|
||||
ContentType *contentType
|
||||
)
|
||||
|
||||
func init() {
|
||||
Form = &form{}
|
||||
ContentType = &contentType{}
|
||||
}
|
Loading…
Reference in New Issue
Block a user