更新时间:2020-10-22 11:23
本文介绍 API 订阅方应用如何使用 NodeJS 语言发送 HTTP 请求接入网关。
在进行本地应用开发前,您需要确保已经完成以下操作:
发请求到网关本质上就是一个简单的 HTTP 请求,但是由于当前 API 网关要求订阅方必须加签,所以在发起 HTTP 请求之前,您需要生成一个加签信息,并加入请求 Header 中。
sofa-signature-js
,对请求进行加签。
import {
Signature,
SignatureAlgorithm,
HTTPDigestWithBase64,
DigestAlgorithm
} from "sofa-signature-js";
import fetch from 'node-fetch';
// api 信息
const gateway = "5jzkcn0idt3w4czs.apigateway.inc.alipay.net";
const method = "POST";
const path = "/simple/demo";
const headers = {
'Content-Type': 'application/json'
};
//开启数据加密后,在调用请阅的 API 时必须传入应用的 AK 和 SK 完成加签。
// app ak
const accesskey = "m9hoHiqtjylGjqXC";
// app sk
const secretkey = "sxCg1uk6UjGARr1hPswE0W2KHe86YvhX";
// 为 request body 生成 digest,可以保证 request body 不被篡改
const digest = HTTPDigestWithBase64(DigestAlgorithm.HMACSHA256, body);
headers["digest"] = digest;
// 创建加签对象
const sign = new Signature(
accesskey,
secretkey,
SignatureAlgorithm.HMACSHA256,
signheaders
);
// signheaders 决定对哪些 header 进行加签
const signheaders = ["(request-target)", "digest"];
// 生成签名
const authorization = sign.doSignature(secretkey, headers, method, path);
// 将签名放到 header
headers["Signature"] = authorization;
const body = JSON.stringify({
name:'jack',
});
// 发起请求
fetch(`${gateway}${path}`,{
method,
headers,
body
})
.then(function(res) {
return res.json();
})
在文档使用中是否遇到以下问题
更多建议
匿名提交