如果找不到资源且缺少If-Match,API是否应返回404或428?

时间:2017-11-22 17:14:27

标签: rest web-services http http-status-codes

客户端在资源上发送import tkinter as tk from datetime import datetime # --- functions --- def update_time(): # get current date & time as text current = datetime.now().strftime('%Y.%m.%d %H:%M:%S') # update label with current date and time label['text'] = current # run update_time again after 1000ms (1s) root.after(1000, update_time) # --- main --- root = tk.Tk() # create Label without text - update_time will set text label = tk.Label(root) label.pack() # run update_time first time update_time() root.mainloop() PUT请求:

DELETE

如果资源已被删除,他将获得/users/user_id

如果他没有提供404标题,则会获得If-Match

如果他没有提供428标题,则资源已被删除,API会返回什么内容?

如果资源不存在,返回If-Match似乎是合理的,无论请求是否正确制定。毕竟资源不存在于第一位。我试图对不存在的事情采取行动,无论我做什么都必然会失败。

但从实际角度来看,可以立即返回404,甚至不检查数据库中是否存在元素。

我意识到这个问题也适用于数据错误的428。在我的API中,这将触发PUT,因为输入的验证首先发生。这是正确的行为吗?

同样,当422 POST时,即使/users/user_id不存在,我的API也会返回405(方法不允许),而不是{{1} }}。这就是我使用的框架(Python Flask)的工作方式,而不是个人设计选择。

0 个答案:

没有答案