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 可以包含回调函数名称。这里有什么 secret ?有相关的js文档吗?
无论如何,这是一个 javascript 示例。如果我想使用 python requests
来做同样的工作。我应该怎么做以及做什么?
我完全被困在这里了。
感谢您的建议。
最佳答案
这种类型的调用实际上仅在浏览器中使用,因此不适用于 Python 请求。
这是一个 JSONP 请求的示例,这是一种创建 cross-origin request 的方法。 ,EG,您在 foobar.com
上提供的应用想要向 example.com
发出 POST 请求。在许多(但不是全部)情况下,出于安全原因,您的浏览器会阻止此类请求。
在这种情况下,请求的结果将传递给回调,然后由浏览器执行。
相关问题之前已被问过,这里有一个关于 JSONP 的很好的解释——它是如何工作的,以及为什么你想在这里使用它:https://stackoverflow.com/a/2067584/3084820
如果您使用请求
,您将不会有跨源问题,因为您将从服务器端发出该请求。我不熟悉 goodreads API,但我怀疑他们有一个可以从服务器调用的端点版本。
注意:Goodreads API 相当奇怪并且没有详细记录。我对此进行了尝试,并能够使用 requests
让它工作,但是 EG 您需要将 API key 作为 key=...
而不是 user_id 发送=...
关于javascript - Python 请求句柄 url 包含回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53801382/