Apigee Edge 策略中的 Base64 编码



在 Apigee 策略中执行 Base64 编码的最简单方法是什么?我需要对要以编程方式发送的短信文本进行编码。

我知道我可以显式包含代码,但我更愿意使用内置的功能(如果可用)。

实现此目的的最有效方法是创建一个 python 脚本策略,然后使用 python 的内置 base64 模块构建一个简单的函数,用于对参数进行 base64 编码或解码。

如果您从此处获取示例代理:http://apigee.com/docs/api-services/content/api-proxy-samples 您将在 /simpleProxy/apiproxy/resources/py 中找到一个 python 示例。

策略 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代理中执行此操作。

目前没有内置简单地注入 HTTP 基本身份验证标头或生成字符串的 base64 编码的功能。

你可以用一个Javascript标注来做到这一点,就像这样。

策略 XML:

<Javascript name='JavaScript-SetAuthz'>
  <ResourceURL>jsc://nameOfTheJavaScriptFileHere.js</ResourceURL>
</Javascript>

和 JavaScript

我们还添加了一个示例,展示了如何在 JavaScript 中执行此操作:

https://github.com/apigee/api-platform-samples/tree/master/sample-proxies/base64encoder

现在 Apigee 中内置了更新的功能 - 消息模板中内置了 encodeBase64 和 decodeBase64。有关更多详细信息,请参阅:https://docs.apigee.com/api-platform/reference/message-template-intro#base64-encoding-functions

--

缺乏评论的声誉(如此羞耻),所以添加一个答案 --

由于您专门询问了有关编码文本而不是二进制内容的问题,因此您可以通过使用 b64encode 而不是编码字符串对 Cheeso 的答案进行小幅改进:

base64string = base64.b64encode('%s:%s' % (username, password))

在我的测试中,这也快了一点。

最新更新