GET API создан с использованием лямбда-сервиса и API-шлюза, работающего из почтальона, но не из браузера - PullRequest
1 голос
/ 22 января 2020

Я создал API метода GET для генерации qr-кода с помощью службы Lambda (используя python 3.6) и шлюза API.

API работает как с почтальоном, так и с браузером, когда я передаю простой параметр строки запроса.

Например. : https://xxxxxxxxxxx.amazonaws.com/DEV/qrcode/?data=umaprasad

Это дает мне правильный код qr.

Когда я передаю JSON данные в параметре строки запроса для того же API он отлично работает с Почтальоном , но когда я вызываю тот же API из браузера chrome, возникает HTTP ERROR 400 .

https://xxxxxxxxxxxxxxxxxxxxxxxx.amazonaws.com/dev/qr-code-generator/?data= {"sample_key": "sample_value"}

API Error

Я также разрешил заголовки CORS.

Как преодолеть эту проблему?

Ответы [ 2 ]

0 голосов
/ 27 января 2020

В нашем случае мы хотели вызвать этот URL внутри тега image HTML. поэтому мы заставили его работать, используя вызов функции encodeURIComponent из javascript, чтобы URL кодировал часть данных, чтобы API-шлюз получал входные данные в требуемом формате.

Пример ниже: -

<html>
    <body> 
        <img src='base_url?data='<script>b</script'>
    </body>
    <script> 
            let a = {"name":"vinit"}
            let b = encodeURIComponent(JSON.stringify(a))
     </script>
</html>
0 голосов
/ 22 января 2020

Вы пытались экранировать json при отправке в строке запроса, подобной этой?

{%22sample_key%22:%22sample_value%22}

Почтальон делает это для вас по умолчанию, поэтому может именно поэтому он работает.

Кстати, отправка POST больше подходит для отправки json вместо GET. Я не уверен, каков ваш вариант использования.

...