下面是一个完整的示例应用程序,展示如何使用 Flask-RESTful 创建一个简单的 RESTful API:
代码语言:javascript复制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 应用程序。