我确定我错过了一些明显的东西,但现在是:
@app.route(PREFIX + '/<table>/<int:index>', methods = ['DELETE'])
def delete_row(table, index=None):
if table not in can_delete:
abort(404)
try:
del database[table][index]
except:
abort(404)
print('returning')
以下是运行它的结果:
* Running on http://127.0.0.1:8080/ (Press CTRL+C to quit)
returning
127.0.0.1 - - [13/Feb/2015 11:28:44] "DELETE /api/json/types/ig-folders/1 HTTP/1.1" 500 -
127.0.0.1 - - [13/Feb/2015 11:29:01] "DELETE /api/json/types/ig-folders/99 HTTP/1.1" 404 -
127.0.0.1 - - [13/Feb/2015 11:28:35] "DELETE /api/json/types/invalid/1 HTTP/1.1" 404 -
我的GET处理程序工作正常,DELETE处理程序正常工作,除了讨厌的500错误。问题是我没有返回任何值吗?我的印象是DELETE应该只返回一个状态,而不是数据。
答案 0 :(得分:7)
删除成功后,您没有返回响应。抛出500,因为None
不是Flask视图的有效返回值。
返回an acceptable response type,就像字符串一样。
对于200响应,您可以返回:
'Success', 200, {'Content-Type': 'text/plain'}
或者你可以返回一个204 No Content,在那里你会为响应主体返回一个空字符串:
'', 204
答案 1 :(得分:1)
问题是从DELETE操作返回标准200(OK)响应代码仍然需要响应主体。您必须返回响应或状态代码204(NO CONTENT)。