我正在研究一个Flask示例,它获取博客文章并通过RESTful服务将它们添加到数据库中。在
在实施RESTful服务之前,我通过执行以下操作将博客文章添加到本地数据库:
@main.route('/', methods=['GET', 'POST'])
def index():
form = PostForm()
if current_user.can(Permission.WRITE_ARTICLES) and \
form.validate_on_submit():
post = Post(body=form.body.data,
author=current_user._get_current_object())
db.session.add(post)
return redirect(url_for('.index'))
现在我已经了解了RESTful服务部分,下面的to_json()
和{
以下内容将在数据库中插入新的博客文章:
//POST resource handler for posts
@api.route('/posts/', methods=['POST'])
@permission_required(Permission.WRITE_ARTICLES)
def new_post():
post = Post.from_json(request.json)
post.author = g.current_user
db.session.add(post)
db.session.commit()
return jsonify(post.to_json()), 201, \
{'Location': url_for('api.get_post', id=post.id, _external=True)}
如果有人能解释一下这些功能是如何相互作用的,我将不胜感激。我对这一切的理解是,在客户机设备上键入一篇博客文章,为了将其发送到web服务,调用to_json
函数将帖子转换为JSON。一旦web服务接收到博客文章的JSON版本,就会调用from_json
函数将JSON帖子转换回其原始状态。对吗?在
编辑:
只要重读这一页,我想我的理解与实际发生的事情是相反的。为了从web服务获取博客文章,调用to_json
函数将数据转换为JSON。然后在客户端,调用from_json
函数将数据从JSON转换回来。在
你的编辑是正确的。restapi的常见响应格式是JSON,这就是为什么返回时响应被转换为JSON。在
还有一个用于向restapi发送数据的公共头是
application/json
,这就是代码将接收到的数据“从JSON”转换的原因。在相关问题 更多 >
编程相关推荐