Не удается получить AWS API Gateway для переопределения кодов ответов - проверка конечной точки FitBit - PullRequest
0 голосов
/ 17 октября 2019

Я интегрирую FitBit с платформой моей компании, и мы переходим от синхронизации с нашим собственным сервером к отправке данных в поток AWS Kinesis. Это также требует от нас установки шлюза API AWS с методом POST для записи данных в поток. Я также настроил метод GET на том же ресурсе для процесса проверки.

Вот проблема, с которой я сталкиваюсь:

После правильной настройки конечной точки API FitBit предоставляеткод проверки и требует процесса проверки, в котором он отправляет запрос GET конечной точке с параметром запроса? verify = {correctVerificaitonCode} и хочет получить ответ 204, а другой - с параметром? verify = {invalidVericationCode} и хочет получить ответ 404,Это, очевидно, было бы легко выполнить в нашем бэкэнде Rails, где я контролирую код, но в AWS это запутанный беспорядок с небольшим контролем.

Я прочитал бесконечную документацию по AWS о MappingШаблоны и ответ на интеграцию, но независимо от того, что я делаю, я не могу заставить API отвечать чем-либо, кроме 200 (если запрос является чистым и имеет какой-либо параметр? Verify) или 500 (когда я намеренно делаю неверный запрос). В документах AWS нет однозначного ответа на этот вопрос.

Это самое близкое к тому, что я пришел к настройке, с которой обещание документов должно работать, но это не так: Использование регулярного выражения HTTP-статуса Integration Response

И с этим шаблоном сопоставления

Я два дня в этом разбираюсь и разочаровываюсь до конца. Помощь!

1 Ответ

0 голосов
/ 18 октября 2019

На всякий случай, если кто-нибудь найдет эту ветку в будущем и столкнется с той же проблемой - вот как вы проверяете приложение API FitBit Developer с потоком Amazon Kinesis, подаваемым шлюзом API AWS:

Во-первых, настройте метод POST вашего API - для этого есть руководства AWS. Выберите сервис AWS в качестве типа интеграции и kinesis в качестве сервиса, затем настройте шаблон отображения для 'application / json', чтобы он выглядел следующим образом:

#set($event = $input.body)
#set($data = '{"action":' + $event +', "authorization": "' + $input.params('Authorization') + '", "stage":"' + $context.stage + '"}')
#set($body = $util.base64Encode($data))
{
   "Data": "$body",
   "PartitionKey": "shard-1",
   "StreamName": "gm-fitbit"
}

Как только вы это сделаете, создайте метод GETна том же ресурсе. Установите MOCK в качестве типа интеграции и создайте конечную точку. Теперь нажмите на метод GET и посетите запрос метода. Разверните параметры строки запроса URL и добавьте verify в качестве параметра запроса. Теперь вернитесь к методу и откройте отклик Integration.

В уже существующем методе ответа 200 разверните его и добавьте регулярное выражение HTTP-статуса 2\d{2} и обработку при передаче.

Expand MappingШаблоны и для 'application / json' создайте этот шаблон отображения:

{
  #if( $input.params('verify') == "theVerificationCodeProvidedToYouByFitbit" )
    #set($context.responseOverride.status = 204)
  #else
    #set($context.responseOverride.status = 404)
  #end
}

Вот и все! Снова разверните API, вернитесь в Fitbit и нажмите «Проверить»!

Там. Теперь в Интернете есть официальное руководство по интеграции Fitbit с потоком AWS Kinesis, которое мне хотелось бы иметь, борясь с этим в течение 3 дней.

Приветствия!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...