【问题标题】:how to call another webservice api from flask如何从烧瓶中调用另一个 web 服务 api
【发布时间】:2014-09-28 17:53:42
【问题描述】:

我在我的烧瓶服务器中使用重定向来调用另一个 web 服务 api.e.g

@app.route('/hello')
def hello():
    return redirect("http://google.com")

网址在逻辑上更改为 google.com,但有什么方法可以让我保持相同的网址? 或任何其他方式来获得网络服务调用。

【问题讨论】:

    标签: python flask


    【解决方案1】:

    您需要向服务器“请求”数据,然后发送。

    你可以使用 python stdlib 函数(urllib 等),但它很尴尬,所以很多人使用'requests'库。 (pip install requests)

    http://docs.python-requests.org/en/latest/

    所以你最终会得到类似的东西

    @app.route('/hello')
    def hello():
        r = requests.get('http://www.google.com')
        return r.text
    

    如果您无法安装requests,无论出于何种原因,以下是使用standard library(Python 3)的方法:

    from urllib.request import urlopen 
    
    @app.route('/hello')
    def hello():
        with urlopen('http://www.google.com') as r:
            text = r.read()
        return text
    

    使用 stdlib 版本意味着您最终会使用 stdlib SSL (https) 安全证书,这在某些情况下可能会成为问题(例如on macOS sometimes

    我真的推荐使用requests 模块。

    【讨论】:

    • 成功了。谢谢。还有其他方法可以做这些吗?
    • @user3089927:你所说的“做事”是什么意思?
    • 抱歉,只是想知道是否还有其他方法可以解决此问题?
    • 您可以使用subprocess.check_output(['curl','http://www.google.com']),它适用于*NIX 机器。您可以在您的 HTML <iframe src="http://www.google.com" /> 类型的东西中放置一个 iframe(尽管这是作弊)。您可以在 javascript (developer.chrome.com/extensions/xhr) 中使用跨域 XHR 请求,您可以在 JS 中使用任何其他跨域解决方案:jquery-howto.blogspot.co.uk/2013/09/…, ...
    • 我注意到一件事,你正在返回 r.text 所以它不会呈现完整的页面,除了上面的文本。另外,我看到 google.com 页面,但它就像 google.com 的本地副本,因此无法使用该页面。如果在文本框中输入任何内容,则会引发 404 错误。
    猜你喜欢
    • 2020-07-08
    • 2011-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-31
    • 2019-10-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多