Включить кэширование в параметре запроса метода API Gateway через AWS SDK - PullRequest
0 голосов
/ 27 декабря 2018

У меня есть API в API Gateway, и я хочу включить или отключить кэширование параметров запроса через AWS SDK.

Метод GET /cats.Я использую метод updateStage и пробовал следующее:

params = {
  restApiId: 'myRestApiId',
  stageName: 'myStageName',
  patchOperations: [
    {
      op: 'replace',
      path: '/~1cats/GET/requestParameters/method.request.header.pawId/caching/enabled'
    }];
await aws.updateStage(params).promise();

, который завершается ошибкой:

Неверный путь установки метода: requestParameters / method.request.path.pawId / кэширование / включено.Должно быть одним из: [... / metrics / enabled, ... / logging / dataTrace, ... / logging / loglevel, ... / throttling / burstLimit, ... / throttling / rateLimit, ... /caching / ttlInSeconds, ... / caching / enabled, ... / caching / dataEncrypted, ... / caching / requireAuthorizationForCacheControl, ... / caching / unauthorizedCacheControlHeaderStrategy]

, что странно, поскольку.../caching/enabled - это одна из опций, которая «должна быть»!

Как включить кэширование для моего параметра запроса через SDK?

1 Ответ

0 голосов
/ 27 декабря 2018

Насколько я понимаю, вы не можете включить кэширование requestParameters непосредственно в поэтапном API.Вам нужно будет обновить API и развернуть его на этапе снова.Параметр cachingEnabled, который вы видите на уровне этапа, предназначен для включения кэширования полных ответов API (не параметров).https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-caching.html

enter image description here

Теперь для обновления API можно включить кэширование запроса. Параметры можно выполнить с помощью следующей операции.

var params = {
  httpMethod: 'GET',
  resourceId: 'xxxx', /* you will need to pass unique identifier which API gateway creates for /cats or /pets resources */
  restApiId: 'xxxxxxx', /* unique identifer for your API */
  patchOperations: [
    {
      op: 'add', /* add or remove only for enabling/disabling */
      path: '/cacheKeyParameters/method.request.header.pawId',
    },
    /* more items */
  ]
};
apigateway.updateIntegration(params, function(err, data) {
  if (err) console.log(err, err.stack); // an error occurred
  else     console.log(data);           // successful response
});

Примечание. Путь изменяется в зависимости от того, в каком месте вы включаете кэширование параметра.Пример - method.request.header.pawId или integration.request.header.pawId и т. Д.,

Один из самых простых способов узнать точный путь и какие методы необходимо использовать, - вызвать их соответствующие getStage, getIntegration, getMethodПервый и изучение ответов.

...