用户注册
在本文例子中,一个客户端可以使用 POST 请求到 /api/users 上注册一个新用户。请求的主体必须是一个包含 username 和 password 的 JSON 格式的对象。
Flask 中的路由的实现如下所示:
- @app.route('/api/users', methods = ['POST'])
def new_user():
username = request.json.get('username')
password = request.json.get('password')
if username is None or password is None:
abort(400) # missing arguments
if User.query.filter_by(username = username).first() is not None:
abort(400) # existing user
user = User(username = username)
user.hash_password(password)
db.session.add(user)
db.session.commit()
return jsonify({ 'username': user.username }), 201, {'Location': url_for('get_user', id = user.id, _external = True)}
这个函数是十分简单地。参数 username 和 password 是从请求中携带的 JSON 数据中获取,接着验证它们。
如果参数通过验证的话,新的 User 实例被创建。username 赋予给 User,接着使用 hash_password 方法散列密码。用户最终被写入数据库中。
响应的主体是一个表示用户的 JSON 对象,201 状态码以及一个指向新创建的用户的 URI 的 HTTP 头信息:Location。
注意:get_user 函数可以在 github 上找到完整的代码。
这里是一个用户注册的请求,发送自 curl:
- $ curl -i -X POST -H "Content-Type: application/json" -d '{"username":"miguel","password":"python"}' http://127.0.0.1:5000/api/users
- HTTP/1.0 201 CREATED
- Content-Type: application/json
- Content-Length: 27
- Location: http://127.0.0.1:5000/api/users/1
- Server: Werkzeug/0.9.4 Python/2.7.3
- Date: Thu, 28 Nov 2013 19:56:39 GMT
- {
- "username": "miguel"
- }
需要注意地是在真实的应用中这里可能会使用安全的的 HTTP (譬如:HTTPS)。如果用户登录的凭证是通过明文在网络传输的话,任何对 API 的保护措施是毫无意义的。
当前内容版权归 pythondoc.com 或其关联方所有,如需对内容或内容相关联开源项目进行关注与资助,请访问 pythondoc.com .