标签: flask-restful

python flask-restful blueprint和factory pattern一起工作?

我正在使用flask-restful进行一项宁静的服务,我想在我的项目中利用工厂模式和蓝图.在app/__init__.py我有一个create_app函数来创建一个烧瓶应用程序,并返回给外线来电,所以调用者可以启动应用程序.

def create_app():
    app = Flask(__name__)
    app.config.from_object('app.appconfig.DevelopmentConfig')
    from app.resource import resource
    app.register_blueprint(v1, url_prefix='/api')
    print app.url_map
    return app
Run Code Online (Sandbox Code Playgroud)

在该函数内部,我打算使用前缀url注册指向实现包的蓝图.

app/resource/__init__.py下面是代码

from flask import current_app, Blueprint, render_template
from flask.ext import restful
resource = Blueprint('resource', __name__, url_prefix='/api')

@resource.route('/')
def index():    
    api = restful.Api(current_app)
    from resource.HelloWorld import HelloWorld
    api.add_resource(HelloWorld, '/hello')
Run Code Online (Sandbox Code Playgroud)

我的目标是我可以在url访问HelloWorld休息服务/api/hello,但我知道上面的代码有些错误@resource.route('/') ....我得到了一些错误,如AssertionError: A setup function was called after the first request was handled. This usually indicates a bug in the app ...在 …

python rest blueprint flask flask-restful

9
推荐指数
1
解决办法
6145
查看次数

Flask Restful添加资源参数

我希望将对象实例作为参数传递给Flask-RESTfull资源.

这是我的设置:

# in main.py
from flask import Flask
from flask.ext.restful import Api
from bar import Bar
from foo import views

app = Flask(__name__)
api = Api(app)

my_bar = Bar()

api.add_resource(views.ApiPage, "/api/my/end/point/")
Run Code Online (Sandbox Code Playgroud)

然后在views.py中我将资源设置如下:

# In views.py
from flask.ext.restful import Resource

class ApiPage(Resource):
    def get(self):
        serialized = str(my_bar)
        return serialized
Run Code Online (Sandbox Code Playgroud)

所以我遇到的问题是我需要将我的实例传递给Bar()api资源.有没有办法通过这样的add_resource方法传递它api.add_resource(views.ApiPage, "/api/my/end/point/", instance=bar)

python rest flask flask-restful

9
推荐指数
2
解决办法
2万
查看次数

在flask python中调用POST请求时,无法解码JSON对象

我在python中编写了一个简单的REST-ful Web服务器flask,本教程中包含以下步骤; 但是我在调​​用POST请求时遇到了问题.代码是:

@app.route('/todo/api/v1.0/tasks', methods=['POST'])
def create_task():
    if not request.json or not 'title' in request.json:
        abort(400)
    task = {
        'id': tasks[-1]['id'] + 1,
        'title': request.json['title'],
        'description': request.json.get('description', ""),
        'done': False
    }
    tasks.append(task)
    return jsonify({'task': task}), 201
Run Code Online (Sandbox Code Playgroud)

POST使用curl上述页面中的示例发送请求:

curl -i -H "Content-Type: application/json" -X POST -d '{"title":"Read a book"}' http://127.0.0.1:5000/todo/api/v1.0/tasks
Run Code Online (Sandbox Code Playgroud)

但是我得到了这个错误:

HTTP/1.0 400 BAD REQUEST
Content-Type: text/html
Content-Length: 187
Server: Werkzeug/0.11.10 Python/2.7.9
Date: Mon, 30 May 2016 09:05:52 GMT

<!DOCTYPE HTML …
Run Code Online (Sandbox Code Playgroud)

python webserver json flask flask-restful

9
推荐指数
2
解决办法
1万
查看次数

Flask API TypeError:"Response"类型的对象不是JSON可序列化的

我有Python Flask Restful API的问题,数据转到Elasticsearch,当我用Postman发布新数据时,问题是:

TypeError:"Response"类型的对象不是JSON可序列化的

你能帮助我吗?

模型:

   from marshmallow import Schema, fields, validate

class Person(object):
    def __init__(self,tcno=None,firstname=None,lastname=None,email=None,birthday=None,country=None,gender=None):
        self.__tcno = tcno
        self.__firstname = firstname
        self.__lastname = lastname
        self.__email = email
        self.__birthday = birthday
        self.__country = country
        self.__gender = gender

    def __repr__(self):
        return '<Person(firstname={self.__firstname!r})>'.format(self=self)

class PersonSchema(Schema):
    tcno = fields.Str(required=True,validate=[validate.Length(min=11, max=11)])
    firstname = fields.Str(required=True)
    lastname = fields.Str(required=True)
    email = fields.Email(required=True,validate=validate.Email(error="Not a valid email"))
    birthday = fields.Date(required=True)
    country = fields.Str()
    gender = fields.Str()
Run Code Online (Sandbox Code Playgroud)

视图:

from flask import Response, json, request, jsonify, Flask
import requests …
Run Code Online (Sandbox Code Playgroud)

python rest flask flask-restful

9
推荐指数
3
解决办法
3万
查看次数

Python - 如何从同一客户机运行多个烧瓶应用程序

我有一个烧瓶应用程序脚本,如下所示:

from flask import Flask
app = Flask(__name__)

@app.route("/<string:job_id>")
def main(job_id):
    return "Welcome!. This is Flask Test Part 1"

if __name__ == "__main__":
    job_id = 1234
    app.run(host= '0.0.0.0')
Run Code Online (Sandbox Code Playgroud)

我有另一个烧瓶应用程序脚本如下:

from flask import Flask
app = Flask(__name__)

@app.route("/<string:ID>")
def main(ID):
    return "Welcome!. This is Flask Test Part 2"

if __name__ == "__main__":
    ID = 5678
    app.run(host= '0.0.0.0')
Run Code Online (Sandbox Code Playgroud)

两个脚本之间的唯一区别是参数名称及其值.现在我的问题是假设我正在执行第一个脚本.所以我会得到类似的东西

* Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
Run Code Online (Sandbox Code Playgroud)

当我在浏览器中执行http://127.0.0.1:5000/1234时,我能够看到

"欢迎!这是Flask Test Part 1"

现在这个服务器处于活动状态,我正在执行第二个脚本.所以我再次得到

* Running on http://0.0.0.0:5000/ (Press CTRL+C to …
Run Code Online (Sandbox Code Playgroud)

python flask python-3.x flask-restful

9
推荐指数
1
解决办法
8417
查看次数

flask-restful和flask中名称空间和蓝图之间的区别

我无法理解蓝图和名称空间在Web应用程序中的作用是什么。我阅读了文档,但无法完全弄清楚。
如果您给出每种情况的示例简单说明,那对我真的很有帮助。
谢谢!

python flask flask-restful

9
推荐指数
2
解决办法
2429
查看次数

使用OAuth2保护Flask-Restful API

好的,所以我使用Flask-Restful编写了一个API,现在我想实现OAuth2授权.

我已经尝试了pyoauth2,但它没有文档,教程非常复杂.

所以,我的问题是:我该怎么做?

oauth oauth-2.0 flask-restful

8
推荐指数
1
解决办法
4204
查看次数

当DEBUG为False时,错误处理程序不会触发

我正在使用错误处理程序来捕获和处理某些类型的异常:

@app.errorhandler(CustomException)
def handle_custom_exception(error):
    return redirect('redirect-path', code=301)
Run Code Online (Sandbox Code Playgroud)

当这正常工作DEBUGTrue,它隐式地设置PROPAGATE_EXCEPTIONSTrue为好.如果DEBUGFalse,虽然,PROPAGATE_EXCEPTIONS默认为False和瓶返回500用于抛出的所有错误,忽视了注册errorhandler秒.设置PROPAGATE_EXCEPTIONSTrue在这种情况下更正错误处理.

我想知道的是:

  • PROPAGATE_EXCEPTIONS在生产中启用是否安全?有什么副作用我应该关注吗?

  • 为什么Flask在调试与非调试中具有不同的默认值?

python flask flask-restful

8
推荐指数
1
解决办法
594
查看次数

Flask API可将JSON文件提供给简单的HTML + JS + CSS Webapp,同时保持其安全性

我已经制作了一个简单的Web应用程序,它将在表中显示一些数据,该数据将每周更新一次。

此更新是在后端使用一些python代码完成的,该代码在将数据放入SQLite数据库之前会对其进行抓取和更改。

经过阅读后,我了解到要将数据传送到我的Web应用程序,我应该使用Flask创建一个API,该API可以将该数据以JSON形式传送到我的Web应用程序中的JS,然后可以使用该数据来填充表。但是,我应该使用用户名和pw保护我的API。但是,由于它是从API检索数据的JS前端,因此实际上没有意义,因为用户名和pw必须硬编码到JS中,然后用户才能读取。(我认为)

我应该向所有人公开我的API,还是不是将SQLite数据用作Webapp后端的方法?我可以将API仅保留为GET。

javascript flask flask-restful

8
推荐指数
1
解决办法
117
查看次数

Flask-Restful 错误:请求内容类型不是“application/json”。"}

我正在遵循这个教程,并且进展顺利。然后他介绍了reqparse,我也跟着介绍。我尝试测试我的代码,但收到此错误 {'message': "Did not attempt to load JSON data because the request Content-Type was not 'application/json'."}

我不知道我是否遗漏了一些非常明显的东西,但我很确定我准确地复制了他的代码。这是代码: main.py

from flask import Flask, request
from flask_restful import Api, Resource, reqparse

app = Flask(__name__)
api = Api(app)

#basic get and post
names = {"sai": {"age": 19, "gender": "male"},
            "bill": {"age": 23, "gender": "male"}}
class HelloWorld(Resource):
    def get(self, name, numb):
        return names[name]

    def post(self):
        return {"data": "Posted"}

api.add_resource(HelloWorld, "/helloworld/<string:name>/<int:numb>")

# getting larger data
pictures = {}
class picture(Resource):
    def …
Run Code Online (Sandbox Code Playgroud)

python rest flask flask-restful

8
推荐指数
3
解决办法
2万
查看次数