这里的地方REST apis返回web ui而不是json

时间:2018-05-07 18:27:23

标签: here-api

我正在评估这里的地方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,但无法在documentation page上找到任何信息。

3 个答案:

答案 0 :(得分:1)

答案是将回调参数添加到网址。例如:

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

文件中不清楚。我从HERE支持处获得了这些信息。

答案 1 :(得分:1)

这是因为您在浏览器地址栏中尝试了请求,在这种情况下,浏览器会自动将Accept: text/html添加到请求标题中。

然后,因为Places API有一些Web助手工具可以使用可用参数,所以它会返回html(Web UI),因为在请求标题中找到了Accept: text/html

添加callback的解决方案更像是一种解决方法,因为它使用回调参数的值包装响应。

您的初始请求实际上是有效的。如果你从你的程序或者像Postman这样的REST客户端而不是从浏览器发送它,你实际上默认获得了JSON,所以没有其他事可做。当然,您可以明确地发送标题Accept: application/json以保证安全。

[1]打开浏览器开发人员工具的网络面板,查看发送的内容。

答案 2 :(得分:0)

您必须设置Accept标头,以便服务以JSON响应。

请参阅文档here中的示例:

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}'