下面是一个完整的示例应用程序,展示如何使用 Flask-RESTful 创建一个简单的 RESTful API:
from flask import Flask
from flask_restful import Api, Resource, reqparse, fields, marshal_with, abort
app = Flask(__name__)
api = Api(app)
parser = reqparse.RequestParser()
parser.add_argument('name', type=str, required=True, help='Name is required')
resource_fields = {
'message': fields.String
}
class HelloWorld(Resource):
@marshal_with(resource_fields)
def get(self):
args = parser.parse_args()
name = args['name']
if name.lower() == 'world':
abort(400, message='Name cannot be World')
message = f'Hello, {name}!'
return {'message': message}
api.add_resource(HelloWorld, '/')
if __name__ == '__main__':
app.run(debug=True)在上面的代码中,我们首先导入 Flask、Api、Resource、reqparse、fields、marshal_with 和 abort 类。接下来,我们使用 Flask 和 Api 类初始化一个名为 app 和 api 的 Flask 应用程序实例和 Flask-RESTful 应用程序实例。
然后,我们定义了一个名为 parser 的 RequestParser 对象,用于解析请求中的参数。我们向 parser 对象中添加了一个名为 name 的参数,类型为字符串,并将其标记为必需的参数。如果客户端未提供 name 参数,则 Flask-RESTful 会返回一个错误消息。
接下来,我们定义了一个名为 resource_fields 的字典,用于序列化响应数据。在本例中,我们只序列化了一个名为 message 的字符串字段。
然后,我们定义了一个名为 HelloWorld 的资源类,继承自 Flask-RESTful 中的 Resource 类。在 HelloWorld 类中,我们添加了一个名为 get 的方法,并使用 @marshal_with 装饰器将响应数据序列化为 JSON 格式。在 get 方法中,我们首先使用 parser 对象解析请求中的参数,并从中获取名为 name 的参数。接下来,我们根据参数 name 构造一个名为 message 的字符串,并返回一个包含 message 字段的字典。如果客户端提供的 name 参数为 World,则调用 abort 函数返回一个状态码为 400 的错误响应,并包含一个错误消息。
最后,我们将 HelloWorld 资源类注册到 api 对象中,并启动 Flask 应用程序。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。