Фон
API Connect 2018 предоставляет два варианта шлюзов.
(1) DataPower Gateway — совместимость с v5
Этот шлюз совместим с APIC v5, а значит, и политика GatewayScript. Вам не нужно делать ничего дополнительно, чтобы иметь возможность использовать apim.setvariable
, как вам не нужно было в v5.
(2) Шлюз API DataPower
Это новый шлюз, доступный в APIC 2018. Он обеспечивает множество улучшений интерфейса. производительность, возможность отладки и т. д. Он не полностью обратно совместим. Похоже, вы используете этот новый шлюз.
Опции APIGW
У вас есть два варианта для вашего конкретного примера apim.setvariable
в политике GatewayScript при использовании этого APIGW:
(Вариант 1): Перенесите свой код GatewayScript, чтобы использовать новые функции, доступные в GatewayScript, в новом шлюзе API. У них должны быть лучшие интерфейсы, лучшая производительность и исправлено много ошибок. Обычно они задокументированы здесь: https://www.ibm.com/support/knowledgecenter/en/SS9H2Y_7.7.0/com.ibm.dp.doc/context_apigw_js.html
Конкретная функция, которую вы ищете для установки переменной в контексте API, задокументирована здесь: https://www.ibm.com/support/knowledgecenter/en/SS9H2Y_7.7.0/com.ibm.dp.doc/context_apigw_js.html#context.set
Чтобы установить переменную в контексте API, как в приведенном выше примере, вероятно, будет: context.set('message.body',"hello there!");
(Вариант 2): Если вы хотите использовать новый APIGW для других преимуществ, но у вас также есть политики GatewayScript, для переноса которых у вас не так много времени, и вы готовы остаться с более низкой производительностью и т. д. на время находясь в этой части вашего API, то для этих политик GatewayScript вы можете использовать Compatibility Layer
в реализации политики APIGW GatewayScript.
Это сократит общее время переноса, но все же могут потребоваться некоторые изменения в сценарии.
Чтобы использовать этот Compatibility Layer
, добавьте в свой GatewayScript явную строку var apim = require('apim');
, после чего вы сможете использовать функции обратной совместимости APIM.
Например, в вашем случае в вопросе:
var apim = require('apim');
var req=apim.setvariable('message.body',"hello there!");
Зачем заставлять вас добавлять дополнительную строку? Одна из причин заключается в том, что это помогает вам убедиться, что вы случайно не используете Compatibility Layer
в своих новых сценариях GatewayScript, которые вы пишете для API Connect 2018 и последующих версий. Хотя старые функции по-прежнему доступны, по умолчанию он будет пытаться помочь вам использовать только новые функции с более высокой производительностью. При необходимости это всего лишь одна дополнительная строка в верхней части скрипта.
Резюме
В целом у вас остается три варианта с API Connect 2018 для ваших старых политик APIC v5 GatewayScript:
- DataPower Gateway — совместимость с v5 — полная совместимость и повторное использование именно ваших старых файлов сценариев
- Шлюз API DataPower с уровнем совместимости — добавьте одну дополнительную строку
require
и значительно упростите процесс переноса.
- Полностью нативный шлюз API DataPower — лучший опыт и производительность, но больше работы для переноса ваших скриптов, используйте новые функции, задокументированные здесь: https://www.ibm.com/support/knowledgecenter/en/SS9H2Y_7.7.0/com.ibm.dp.doc/context_apigw_js.html
person
Morris
schedule
15.01.2019