restclient

package
v0.6.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 8, 2020 License: MIT Imports: 13 Imported by: 0

README

restclient使用方法

安装

go get github.com/hanguangbaihuo/sparrow_cloud_go/

发送Get请求示例

import "github.com/hanguangbaihuo/sparrow_cloud_go/restclient"

func processGet(ctx iris.Context) {
    serviceAddr := "sparrow-product-svc:8001"
    // serviceAddr := "127.0.0.1:8001"
    apiPath := "/api/sparrow_products/products/show/"
    res, err := restclient.Get(serviceAddr, apiPath, nil)
    if err != nil {
    // do something
    }
    fmt.Println(string(res.Body), res.Code)
}

发送Post请求示例

import "github.com/hanguangbaihuo/sparrow_cloud_go/restclient"

type Data struct { 
	Name string  `json:"name"` 
	Price int  `json:"price"` 
	Offer int  `json:"offer"` 
}

func processPost(ctx iris.Context) {
    serviceAddr := "sparrow-product-svc:8001"
    apiPath := "/api/sparrow_products/products/create/"
    data := Data{"test", 99, 0}
    res, err := restclient.Post(serviceAddr, apiPath, data)
    if err != nil {
    // do something
    }
    fmt.Println(string(res.Body), res.Code)
}

IRIS中请求头传递示例

import "github.com/hanguangbaihuo/sparrow_cloud_go/restclient"

type Data struct { 
	Name string  `json:"name"` 
	Price int  `json:"price"` 
	Offer int  `json:"offer"` 
}

func processPost(ctx iris.Context) {
    serviceAddr := "sparrow-product-svc:8001"
    apiPath := "/api/sparrow_products/products/create/"
    data := Data{"test", 99, 0}
    kwargs := map[string]interface{}{"timeout":5000, "headers":ctx.Request().Header}
    res, err := restclient.Post(serviceAddr, apiPath, data, kwargs)
    if err != nil {
    // do something
    }
    fmt.Println(string(res.Body), res.Code)
}

restclient中的方法

目前该package共有5个方法,分别是Get,Post,Put,Patch,Delete方法
每个方法的参数和返回值完全一样,是XXX(serviceAddr string, apiPath string, payload interface{}, kwargs ...map[string]interface{}) (Response, error)
参数用途:
serviceAddr:跨服务调用的服务地址,格式类似"sparrow-product-svc:8001"或者"127.0.0.1:8000"
apiPath:请求服务的api,格式类似"/api/sparrow_products/products/create/"
payload:请求服务接口所需要的数据
kwargs:用来或者添加一些额外信息,见下方的kwargs详解
方法参数中kwargs详解
kwargs类型是map[string]interface{}
其中参数包括以下几部分:
timeout:建立连接和发送接收数据超时设置,不填写默认为10秒,时间单位为毫秒
protocol:默认为"http",构建url所用
headers:要传递的请求头信息,数据格式是http.Header类型
Content-Type:默认为"application/json"
Accept: 默认为"application/json"
Authorization:添加到请求头中的Authorization,如果设置,则请求头中的Authorization为用户设置的字符串;
			如果只有一个token字符串,则会设置为"token "+token,默认为空

举例:
kwargs := map[string]interface{}{"timeout":10000}
res, err := restclient.Get(serviceAddr, apiPath, nil, kwargs)

方法返回Response

返回的结构体如下:
type  Response  struct {
	Body []byte
	Code int
}
Body是返回的数据
Code是返回的状态码

本地代理

直接在环境变量添加http_proxy
例如http_proxy="http://12.34.56.78:8888" go run main.go

配合链路追踪

需先在iris应用中添加 追踪链中间件

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Response

type Response struct {
	Body []byte
	Code int
}

Response is the response data of external request url

func Delete

func Delete(serviceAddr string, apiPath string, payload interface{}, kwargs ...map[string]interface{}) (Response, error)

func Get

func Get(serviceAddr string, apiPath string, payload interface{}, kwargs ...map[string]interface{}) (Response, error)

func Patch

func Patch(serviceAddr string, apiPath string, payload interface{}, kwargs ...map[string]interface{}) (Response, error)

func Post

func Post(serviceAddr string, apiPath string, payload interface{}, kwargs ...map[string]interface{}) (Response, error)

func Put

func Put(serviceAddr string, apiPath string, payload interface{}, kwargs ...map[string]interface{}) (Response, error)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL