126 lines
5.0 KiB
Go
126 lines
5.0 KiB
Go
// Package httpclient 基础请求库
|
|
//
|
|
// Author: go_developer@163.com<白茶清欢>
|
|
//
|
|
// Description: 基础常量定义
|
|
//
|
|
// File: define.go
|
|
//
|
|
// Version: 1.0.0
|
|
//
|
|
// Date: 2022/05/01 19:56:48
|
|
package httpclient
|
|
|
|
import (
|
|
"git.zhangdeman.cn/zhangdeman/exception"
|
|
"github.com/ddliu/go-httpclient"
|
|
)
|
|
|
|
const (
|
|
// ContentTypeFormData form-data 请求
|
|
ContentTypeFormData = "form-data"
|
|
// ContentTypeFormURLEncoded x-www-form-urlencoded 请求
|
|
ContentTypeFormURLEncoded = "application/x-www-form-urlencoded"
|
|
// ContentTypeJSON json的请求方式
|
|
ContentTypeJSON = "application/json"
|
|
// ContentTypeDefault 默认的请求方式
|
|
ContentTypeDefault = ContentTypeJSON
|
|
)
|
|
|
|
const (
|
|
// BodyTypeJson json数据
|
|
BodyTypeJson = "json"
|
|
// BodyTypeXML xml数据
|
|
BodyTypeXML = "xml"
|
|
// BodyTypeYaml yaml数据
|
|
BodyTypeYaml = "yaml"
|
|
)
|
|
|
|
const (
|
|
// DefaultConnectTimeout 默认连接超时时间, 毫秒
|
|
DefaultConnectTimeout = 1000
|
|
// DefaultReadTimeout 默认读取超时时间, 毫秒
|
|
DefaultReadTimeout = 1000
|
|
// DefaultResponseCodeField 默认code字段
|
|
DefaultResponseCodeField = "code"
|
|
// DefaultResponseMessageField 默认message字段
|
|
DefaultResponseMessageField = "message"
|
|
// DefaultResponseDataField 默认数据字段
|
|
DefaultResponseDataField = "data"
|
|
// DefaultFailMessage 接口响应失败
|
|
DefaultFailMessage = "api request fail"
|
|
// DefaultSuccessMessage 接口响应成功
|
|
DefaultSuccessMessage = "api request success"
|
|
)
|
|
|
|
var (
|
|
// DefaultSuccessCode 默认成功状态码
|
|
DefaultSuccessCode = []string{"0", "200"}
|
|
// DefaultSuccessHttpCode 默认成功http状态码
|
|
DefaultSuccessHttpCode = []string{"200"}
|
|
)
|
|
|
|
const (
|
|
// ResponseCodeFieldLocationBody 响应状态码在body
|
|
ResponseCodeFieldLocationBody = "body"
|
|
// ResponseCodeFieldLocationHeader 在header
|
|
ResponseCodeFieldLocationHeader = "header"
|
|
// ResponseCodeFieldLocationDefault 响应状态码位置默认值
|
|
ResponseCodeFieldLocationDefault = ResponseCodeFieldLocationBody
|
|
// ResponseBodyAsData 会用整体的body作为数据
|
|
ResponseBodyAsData = "__response__body__"
|
|
)
|
|
|
|
// ApiRequestConfig api请求的配置
|
|
//
|
|
// Author : go_developer@163.com<白茶清欢>
|
|
//
|
|
// Description:
|
|
//
|
|
// Date: 2022/05/01 20:14:18
|
|
type ApiRequestConfig struct {
|
|
Method string `json:"method"` // 请求方法
|
|
Domain string `json:"domain"` // 请求域名
|
|
URI string `json:"uri"` // 请求的路由
|
|
ResponseCodeField string `json:"response_code_field"` // 业务状态码字段
|
|
ResponseCodeFieldLocation string `json:"response_code_field_location"` // 响应的业务状态码位置, 默认 : body . 可配置 body / header
|
|
ResponseMessageField string `json:"response_message_field"` // 业务状态码描述的字段
|
|
ResponseDataField string `json:"response_data_field"` // 业务数据的字段
|
|
SuccessCodeList []string `json:"success_code_list"` // 代表请求成功的code列表
|
|
SuccessHttpCodeList []string `json:"success_http_code_list"` // 代表成功的http code列表
|
|
Parameter map[string]interface{} `json:"parameter"` // 传入的请求参数
|
|
CommonHeader map[string]string `json:"common_header"` // 全部请求都要传的header
|
|
Body []byte `json:"-"` // 请求体
|
|
FullURL string `json:"full_url"` // 完整请求地址
|
|
Timeout Timeout `json:"timeout"` // 超时配置
|
|
ContentType string `json:"content_type"` // 请求方法
|
|
}
|
|
|
|
// Timeout 超时配置
|
|
//
|
|
// Author : go_developer@163.com<白茶清欢>
|
|
//
|
|
// Date : 15:02 2022/5/2
|
|
type Timeout struct {
|
|
Connect int `json:"connect"` // 连接超时
|
|
Read int `json:"read"` // 读取超时时间
|
|
}
|
|
|
|
// ApiResponse 接口响应结果
|
|
//
|
|
// Author : go_developer@163.com<白茶清欢>
|
|
//
|
|
// Description:
|
|
//
|
|
// Date: 2022/05/01 20:25:39
|
|
type ApiResponse struct {
|
|
RequestConfig *ApiRequestConfig `json:"request_config"` // 请求配置
|
|
Response *httpclient.Response `json:"response"` // 响应体
|
|
Exception exception.IException `json:"-"` // 异常信息
|
|
StartRequestTime int64 `json:"start_request_time"` // 开始请求时间, 纳秒
|
|
FinishRequestTime int64 `json:"finish_request_time"` // 完成请求时间,纳秒
|
|
Code string `json:"code"` // 业务状态码
|
|
Message string `json:"message"` // 状态码描述
|
|
Data string `json:"data"` // 响应数据
|
|
}
|