// 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" // DefaultMessage 接口响应失败 DefaultMessage = "api request fail" ) 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"` // 响应数据 }