Python请求句柄URL包含回调

时间:2018-12-16 10:41:10

标签: javascript python api promise python-requests

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做同样的工作。我该怎么办?

我完全被困在这里。

感谢您的建议。

1 个答案:

答案 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密钥