【问题标题】:How to use a Flask Api with Fluter? [closed]如何在 Fluter 中使用 Flask Api? [关闭]
【发布时间】:2020-03-08 04:06:55
【问题描述】:

我正在尝试使用flutter 制作一个简单的应用程序,并将来自python 脚本的数据用作烧瓶restful-api。我制作了我的脚本,我可以通过这种方式获得结果:http://127.0.0.1:5000/query?username=username1 格式化为json。 我正在尝试做的事情就是这样;当我的应用程序开始工作时,弹出窗口将询问username,在输入username 后,它将转到应用程序的主小部件,该小部件将从我的json 页面中的json 获取数据。 所以为了做到这一点,我应该使用在线api 还是使用网络服务器(如果有python)?我仰望谷歌应用引擎,但我什至无法将我的脚本上传到那里。那么将我的restful-api链接到我的flutter应用程序(最后是apk文件)以在任何手机上工作的最简单方法是什么?我的脚本代码在下面,flutter 仍在进行中,直到我弄清楚如何在python 中使用api flutter..

from flask import Flask, request, jsonify
import random
import imdb
from trakt.users import User

app = Flask(__name__)

@app.route('/query', methods=['GET', 'POST'])
def query():
    username = request.args['username']
    moviesDB = imdb.IMDb()
    my = User(str(username))
    myline = str(random.choice(my.watchlist_movies))[9:1000]
    print(myline)
    movies = moviesDB.search_movie(str(myline))
    id = movies[0].getID()
    movie = moviesDB.get_movie(id)
    title = movie['title']
    year = str(movie["year"])
    rating = str(movie["rating"])
    runtime = ' '.join(map(str, movie["runtimes"]))
    directStr = ' '.join(map(str, movie["directors"]))
    writerStr = ', '.join(map(str, movie["writers"]))
    actors = ', '.join(map(str, movie["cast"]))
    summary = movie["plot outline"]
    genre = ', '.join(map(str, movie["genres"]))
    posterurl = movie["full-size cover url"]

    return jsonify(movietitle=title,
                   movieyear=year, movierating=rating, moviegenres=genre, movieruntime=runtime,
                   moviedirectors=directStr,
                   moviewriters=writerStr,
                   moviecast=actors,
                   movieplotline=summary,
                   movieposterurl=posterurl)

if __name__ == '__main__':
    app.run(debug=True)

【问题讨论】:

  • 如果您使用app.run(host='0.0.0.0'),那么您本地网络中的所有设备都可以使用您计算机的本地IP 访问它——例如192.168.0.1。您可以在 Windows 上使用 ipconfig 或在 Linux/Mac 上使用 ifconfig 检查本地 IP。如果路由(您和 Internet 提供商)将某个端口转发到您的本地计算机(即端口 80),那么使用 app(host='0.0.0.0', port=80) 您可以使用外部 IP 从 Internet 访问它 - 您可以查看 Internet 上的许多页面。
  • 您可以尝试ngrok将您的本地计算机用作服务器。
  • 谢谢,我会尝试,因为这可能是我当前项目的合适解决方案,这是一个非常简单的应用程序,但从长远来看,我认为我需要尝试使用在线服务器来处理更多请求。

标签: python python-3.x flutter flask flask-restful


【解决方案1】:

所以,问题是你应该在哪里托管你的 python api?如果是这种情况,那么答案就在您决定的任何地方。如果您正在寻找免费的解决方案,您可以看看这两个:pythonanywhereHeroku。两者都是免费的,但对于 Heroku,必须提供有效的信用卡才能获得完整的正常运行时间。话虽如此,如果您的应用程序要产生大量流量,那么我强烈建议您租用 VPS 或运行 Linux 的专用服务器(许多...许多托管服务提供商)。

【讨论】:

  • 感谢您的建议,我会尝试两者。实际上,我为我的另一个项目尝试了 pythonanywhere,但它不是烧瓶或 api 相关的项目,但我现在看起来很有意义,因此我也可以尝试使用 api 服务器。
猜你喜欢
  • 1970-01-01
  • 2016-06-01
  • 2021-03-17
  • 2020-10-19
  • 2019-06-14
  • 2017-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多