4

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

我知道我可以明确地包含代码,但我更喜欢使用内置的功能(如果可用)。

4

5 回答 5

3

实现这一点的最有效方法是创建一个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 代理中执行此操作。

于 2014-01-11T01:57:13.003 回答
1

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

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

于 2014-03-17T13:42:51.980 回答
1

目前还没有内置简单地注入 HTTP Basic Auth 标头或生成字符串的 base64 编码的功能。

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

政策 XML:

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

JavaScript

于 2014-01-15T06:06:21.750 回答
0

- 缺乏评论的声誉(这样的耻辱)所以添加一个答案 -

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

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

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

于 2014-01-16T01:29:42.687 回答
0

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

于 2021-12-10T16:26:40.493 回答