在 Apigee 策略中进行 Base64 编码的最简单方法是什么?我需要对要以编程方式发送的 SMS 文本进行编码。
我知道我可以明确地包含代码,但我更喜欢使用内置的功能(如果可用)。
在 Apigee 策略中进行 Base64 编码的最简单方法是什么?我需要对要以编程方式发送的 SMS 文本进行编码。
我知道我可以明确地包含代码,但我更喜欢使用内置的功能(如果可用)。
实现这一点的最有效方法是创建一个python 脚本策略,然后使用python 的内置 base64模块构建一个简单的函数,对参数进行 base64 编码或解码。
如果您从此处获取示例代理:http ://apigee.com/docs/api-services/content/api-proxy-samples ,您将在/simpleProxy/apiproxy/resources/py
.
策略 XML 如下所示:
<Script name="Script-GenerateAuthHeader">
<ResourceURL>py://Authheader.py</ResourceURL>
</Script>
python 代码如下所示:
import base64
username = flow.getVariable("request.formparam.client_id")
password = flow.getVariable("request.formparam.client_secret")
base64string = base64.encodestring('%s:%s' % (username, password))[:-1]
flow.setVariable("my.base64.blob", base64string)
或者,如果 python 不是您的风格,您可以使用 js 资源在 javascript 中执行此操作,甚至可以直接在Node.js 代理中执行此操作。
我们还添加了一个示例来展示如何在 JavaScript 中执行此操作:
https://github.com/apigee/api-platform-samples/tree/master/sample-proxies/base64encoder
目前还没有内置简单地注入 HTTP Basic Auth 标头或生成字符串的 base64 编码的功能。
您可以使用 Javascript 标注来做到这一点,就像这样。
政策 XML:
<Javascript name='JavaScript-SetAuthz'>
<ResourceURL>jsc://nameOfTheJavaScriptFileHere.js</ResourceURL>
</Javascript>
- 缺乏评论的声誉(这样的耻辱)所以添加一个答案 -
由于您专门询问了编码文本而不是二进制内容,因此您可以通过使用b64encode而不是 encodestring 对 Cheeso 的答案进行小幅改进:
base64string = base64.b64encode('%s:%s' % (username, password))
这在我的测试中也快了一点。
现在,Apigee 中内置了更新的功能 - 消息模板中内置了 encodeBase64 和 decodeBase64。有关更多详细信息,请参阅: https ://docs.apigee.com/api-platform/reference/message-template-intro#base64-encoding-functions