Skip to content

使用摘要签名认证方式调用阿里云 API 网关。Aliyun api gateway request signature algorithm implemented by go.

License

Notifications You must be signed in to change notification settings

sliveryou/aliyun-api-gateway-sign

Repository files navigation

Aliyun api gateway request signature algorithm implemented by go

English简体中文

Github License Go Doc Go Report Github Latest Release Github Latest Tag Github Stars

For signature methods, see: using digital signature authentication to call api

Installation

Download package by using:

$ go get github.com/sliveryou/aliyun-api-gateway-sign

Usage Example

package main

import (
	"io/ioutil"
	"log"
	"net/http"
	"net/http/httputil"
	"strings"

	sign "github.com/sliveryou/aliyun-api-gateway-sign"
)

func main() {
	var url string = "https://bankcard4c.shumaidata.com/bankcard4c"
	var body string
	var appKey, appKeySecret string

	// Prepare a HTTP request.
	req, err := http.NewRequest(sign.HTTPMethodPost, url, strings.NewReader(body))
	if err != nil {
		// Handle err.
		panic(err)
	}
	// Set the request with headers.
	req.Header.Set(sign.HTTPHeaderAccept, sign.HTTPContentTypeJson)
	req.Header.Set(sign.HTTPHeaderContentType, sign.HTTPContentTypeJson)

	// Sign the request.
	if err := sign.Sign(req, appKey, appKeySecret); err != nil {
		panic(err)
	}

	// Show the dump request.
	dumpReq, err := httputil.DumpRequestOut(req, true)
	if err != nil {
		panic(err)
	}
	log.Println("\n" + string(dumpReq))

	// Do the request.
	resp, err := http.DefaultClient.Do(req)
	if err != nil {
		panic(err)
	}
	defer resp.Body.Close()

	// Handle response.
	content, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		panic(err)
	}
	log.Println("\n"+string(content), resp.StatusCode, resp.Header.Get("X-Ca-Error-Message"))
}

About

使用摘要签名认证方式调用阿里云 API 网关。Aliyun api gateway request signature algorithm implemented by go.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published