В APIM я хочу получить токен OAuth перед вызовом бэкэнда и сохранить его в кеше APIM.
Мне удалось получить токен OAuth.
Я хочу сохранить свой токен в кеше, для этого мне нужна длительность.Извлечение продолжительности из тела ответа - моя проблема.
Сначала я извлекаю токен и длительность, чтобы сохранить их в переменных.Затем переменные используются для хранения значения в кеше.
При извлечении целочисленного значения «expires_in» происходит сбой.
Объект ответа:
{
"access_token": "accesstokenresponse",
"token_type": "bearer",
"expires_in": 3600
}
извлечение данных и помещение в переменные:
<set-variable name="bearer-token"
value="@(((IResponse)context.Variables["response"]).Body.As<JObject>()["access_token"].ToString())" />
<set-variable name="expires-in"
value="@(((IResponse)context.Variables["response"]).Body.As<JObject>(preserveContent: true)["expires_in"].ToString())" />
хранение в кеше:
<cache-store-value key="OAuthKey"
value="@((string)context.Variables["bearer-token"])"
duration="@((int)context.Variables["expires-in"])" />
Извлечение "expires_in "приводит к тому, что ссылка на объект не установлена на экземпляр объекта.
set-variable (153.612 ms)
{
"messages": [
{
"message": "Expression evaluation failed.",
"expression": "((IResponse)context.Variables[\"response\"]).Body.As<JObject>(preserveContent: true)[\"expires_in\"].ToString()",
"details": "Object reference not set to an instance of an object."
},
"Expression evaluation failed. Object reference not set to an instance of an object.",
"Object reference not set to an instance of an object."
]
}