У меня есть общедоступный API Python-eve, и мы можем запросить его следующим образом:
https://my-api.com/collections?where={"name":" Питер"}
Я хочу создать шлюз API для проксирования той же конечной точки URL следующим образом:
https://my-api-amazon-gateway.com/prod/collections?where={"имя":"питер"}
Что я сделал:
- Я создаю новый шлюз API с новым ресурсом «коллекции» и методом «GET» для этого ресурса.
- In the collections - GET - Method Execution, in Method Request:
- in URL Query String Parameters, I add one with name "where"
- в Заголовки HTTP-запроса я добавляю один с именем "Content-Type"
- In the "collections - GET - Method Execution", in "Integration Request"
- in URL Query String Parameters I have name "where" and Mapped from "method.request.querystring.where"
- в Заголовки HTTP я добавляю один элемент "Content-Type" с Mapped from "method.request.header.Content-Type"
Если я перейду к Тест метода и поставлю {"name":"peter"}
в качестве где строки запроса и application/json
в качестве типа содержимого заголовка, все будет работать очень хорошо.
Если я разверну API и попробую ту же конечную точку в развернутом API, это не сработает:
https://my-api-amazon-gateway.com/prod/collections?where={"имя":"питер"}
Он возвращает ошибку 400 Bad Request. В CloudWatch ничего не регистрируется.
Если я попытаюсь ударить
https://my-api-amazon-gateway.com/prod/collections?where=test
Затем все работает как надо, я получаю HTTP 200 OK с ошибкой Python-eve The browser (or proxy) sent a request that this server could not understand.
, это тот же результат, что и при попытке нажать
Итак, по неизвестной мне причине тест работает, но развернутый шлюз API не работает, когда строка запроса является объектом.
Любая подсказка об этом?
Большое спасибо!