ЗДЕСЬ размещает REST API-интерфейс вместо веб-интерфейса на JSON - PullRequest
0 голосов
/ 07 мая 2018

Я оцениваю ЗДЕСЬ API-интерфейсы мест. Однако URL возвращает веб-страницу вместо простого JSON в качестве ответа. Пример запроса:

https://places.cit.api.here.com/places/v1/autosuggest?app_id={YOUR_APP_ID}&app_code{YOUR_APP_CODE}&at=52.5304417,13.4111201&q=rest&pretty

Мне нужен ответ в виде простого JSON, но я не могу найти никакой информации на странице документации .

Ответы [ 3 ]

0 голосов
/ 09 мая 2018

Ответ заключается в добавлении параметра обратного вызова в URL. Пример:

https://places.cit.api.here.com/places/v1/autosuggest?app_id={YOUR_APP_ID}&app_code{YOUR_APP_CODE}&at=52.5304417,13.4111201&q=rest&pretty&callback=xyz

Из документации не понятно. Я получил эту информацию от поддержки ЗДЕСЬ.

0 голосов
/ 20 мая 2018

Это потому, что вы пытались выполнить запрос из адресной строки браузера , и в этом случае браузер автоматически добавляет Accept: text/html в заголовки запроса⁽¹⁾.

Затем, поскольку у API Places есть какой-то инструмент веб-помощника для воспроизведения доступных параметров, он возвращает html (веб-интерфейс), поскольку в заголовках запроса было найдено Accept: text/html.

Решение для добавления callback - это скорее обходной путь, поскольку оно оборачивает ответ значением параметра обратного вызова.

Ваш первоначальный запрос был действительно действительным. Если вы отправляете его из своей программы или REST-клиента, такого как Postman, а не из браузера, вы фактически получаете JSON по умолчанию, так что больше ничего не нужно делать. Конечно, вы можете явно отправить заголовок Accept: application/json, чтобы быть в безопасности.

[1] Откройте сетевую панель инструментов разработчика браузера, чтобы увидеть, что отправлено.

0 голосов
/ 07 мая 2018

Вы должны установить заголовок Accept, чтобы служба отвечала в JSON.

См. Пример в документации здесь :

curl \
  -X GET \
  -H 'Accept: application/json' \
  --get 'https://places.demo.api.here.com/places/v1/discover/search' \
    --data-urlencode 'at=37.7942,-122.4070' \
    --data-urlencode 'q=restaurant' \
    --data-urlencode 'app_id={YOUR_APP_ID}' \
    --data-urlencode 'app_code={YOUR_APP_CODE}'
...