https://www.goodreads.com/api/index包含示例如何通过js调用json api
<script type="text/javascript">
function myCallback(result) {
alert('nb of reviews for book: ' + result.reviews.length);
}
var scriptTag = document.createElement('script');
scriptTag.src = "https://www.goodreads.com/book/isbn/0441172717?callback=myCallback&format=json&user_id=123456789";
document.getElementsByTagName('head')[0].appendChild(scriptTag);
</script>
坦率地说,我很奇怪,URL可能包含回调函数名称。这有什么秘诀?任何相关的js文档?
无论如何,这是一个JavaScript示例。如果我想使用python requests
做同样的工作。我该怎么办?
我完全被困在这里。
感谢您的建议。
答案 0 :(得分:2)
此类调用实际上仅在浏览器中使用,因此不适用于Python请求。
这是一个JSONP请求的示例,它是发出cross-origin request(例如EG)的一种方式,您在foobar.com
处投放的应用希望向example.com
发出POST请求。在许多(但不是全部)情况下,出于安全原因,您的浏览器会阻止此类请求。
在这种情况下,请求的结果将传递到回调,然后由浏览器执行。
之前已经询问了相关问题,关于JSONP的解释很好-它是如何工作的,以及为什么要在这里使用它:https://stackoverflow.com/a/2067584/3084820
如果您使用的是requests
,则不会有跨域问题,因为您将从服务器端发出此请求。我不熟悉goodreads API,但我怀疑它们具有可以从服务器调用的端点版本。
注意:Goodreads API相当怪异,而且没有详细记录。我对此进行了尝试,并能够使用requests
使它正常工作,但是例如,您需要以key=...
而不是user_id=...
的形式发送API密钥