在我的webapp代码中,我一直有这样的结构:
@app.route('some_method/<data>', method=['GET'], name='some_method')
def view(id):
data = base64.urlsafe_b64decode(data)
...
@app.route('some_method', method=['POST'], name='some_method')
def view():
data = request.files.values()[0].file.read() if len(request.files) else request.body.read()
...
...
两个view
函数的代码相同。这不是很干。是否有任何既定的良好做法可以有效地处理瓶子应用程序中的POST和GET?
答案 0 :(得分:2)
想到最简单的方法就是放置&#34; ...&#34;进入它自己的方法/功能,然后调用它
def process_stuff(data):
. . .
@app.route('some_method/<data>', method=['GET'], name='some_method')
def view(id):
data = base64.urlsafe_b64decode(data)
process_stuff(data)
@app.route('some_method', method=['POST'], name='some_method')
def view():
data = request.files.values()[0].file.read() if len(request.files) else request.body.read()
process_stuff(data)
答案 1 :(得分:1)
我的approche将是:
@app.route('some_method', method=['GET', 'POST'], name='some_method')
@app.route('some_method/<id>', method=['GET', 'POST'], name='some_method')
def view(id=None):
if id and request.method == 'POST':
data = base64.urlsafe_b64decode(data)
elif request.method == 'GET':
data = request.files.values()[0].file.read() if len(request.files) else request.body.read()
else
pass # handle this 404 error
...