Python Eve:添加自定义路由,手动更改对象
我刚刚开始使用Eve,它非常适合快速运行完整的RESTAPI。然而,我并不完全相信REST在所有情况下都是完美的,例如,我希望有一个简单的向上投票路线,在那里我可以增加一个对象的计数器。如果我手动检索对象,增加计数器,并更新它,我很容易遇到不同步的问题。因此,我想添加一个简单的额外路由,例如/resource/upvote,它将upvote计数增加1并返回对象 我不知道这有多“骇客”,所以如果它超过了顶部,请告诉我。对于一些重要任务,我认为定制路由没有问题,而这些任务需要以RESTful的方式完成,工作量太大。我知道我可以把upvotes当作它自己的资源,但我以为我们在做MongoDB,所以我们不要过于依赖关系 这就是我所得到的:Python Eve:添加自定义路由,手动更改对象,python,mongodb,rest,flask,eve,Python,Mongodb,Rest,Flask,Eve,我刚刚开始使用Eve,它非常适合快速运行完整的RESTAPI。然而,我并不完全相信REST在所有情况下都是完美的,例如,我希望有一个简单的向上投票路线,在那里我可以增加一个对象的计数器。如果我手动检索对象,增加计数器,并更新它,我很容易遇到不同步的问题。因此,我想添加一个简单的额外路由,例如/resource/upvote,它将upvote计数增加1并返回对象 我不知道这有多“骇客”,所以如果它超过了顶部,请告诉我。对于一些重要任务,我认为定制路由没有问题,而这些任务需要以RESTful的方式完
@app.route('/api/upvote/<type>/<id>')
def upvote(type, id):
obj = app.data.find_one_raw(type, id)
obj['score'] += 1
@app.route('/api/upvote/'))
def upvote(类型、id):
obj=app.data.find_one_raw(类型,id)
obj['score']+=1
- 问题1
始终不返回任何值。我想我必须转换id参数?(我正在使用本机MongoDB ObjectId)find_one_raw
- 问题2如何保存对象?我没有看到像
save\u raw
- 问题#3我们能否将整个过程包装在事务或类似事务中,以确保线程安全?(正如你所知道的,我也是MongoDB的新手)
type
恰好是python关键字。你的意思是说像resource\u type
2:存在app.data.insert
(创建新的)或app.data.update
(更新现有的)
3:显然,在mongodb中没有任何事务可以从线程中看出(正如您所知,我本人是mongodb的新手)1:
type
恰好是python关键字。你的意思是说像resource\u type
2:存在app.data.insert
(创建新的)或app.data.update
(更新现有的)
3:显然,mongodb中没有像线程中那样明显的事务(你可以看出,我自己也是mongodb新手)1。是的,但没关系!您可以在本地覆盖关键字(不建议这样做)。2.酷,谢谢!3.我懂了。。。谢谢你的链接!1.是的,但没关系!您可以在本地覆盖关键字(不建议这样做)。2.酷,谢谢!3.我懂了。。。谢谢你的链接!我不确定如何进行自定义路由,但Eve确实内置了数据完整性和并发控制。因此,尝试更新(修补)已更新的资源时会失败。我不确定如何执行自定义路由,但Eve确实内置了数据完整性和并发控制。因此,尝试更新(修补)已更新的资源时会失败。