如果未设置fields
,我会返回所有可能的车辆字段。如果为fields
提供了一个数组,我只返回那些字段。例如,以下查询:
curl -X GET 'http://example.com/api/cars?fields=name&fields=color&fields=cost'
应返回所有车辆[{"name":"Ford", "color":"blue", "cost":10000},...]
的列表。
现在,另一个请求,但这次还包括汽车马力。
curl -X GET 'http://example.com/api/cars?fields=name&fields=color&fields=cost&fields=hp'
但是应用程序不支持马力。我应该:
[{"name":"Ford", "color":"blue", "cost":10000},...]
null
表示不受支持的字段,即[{"name":"Ford", "color":"blue", "cost":10000, "hp":null},...]
答案 0 :(得分:1)
我将返回HTTP错误代码400 Bad request
以及错误JSON对象,例如{"error":"Unknown field: 'horsepower'"}
,因为您实际上并不知道客户端想要做什么。也许他们要求一个不存在的领域,或者他们在其中一个领域犯了拼写错误。
如果您默默地忽略该错误,客户端将很难检测到它。最好只返回错误并让客户处理它。
答案 1 :(得分:0)
处理上述案件没有严格的指导原则。这一切都取决于您的要求。 A)如果您想严格检查参数,那么您可以发送 400 Bad Request 或
B)如果你不想严格检查参数,那么在没有hp字段的情况下返回,这在大多数情况下会发生。
C)你不应该把丢失的字段作为NULL发送,因为用户可以发送任何垃圾,这会增加你的处理时间。
答案 2 :(得分:0)
http://example.com/api/cars?fields=name&fields=color&fields=cost&fields=hp
识别资源......
但应用程序不支持马力。
也就是说,目前没有http://example.com/api/cars?fields=name&fields=color&fields=cost&fields=hp
的可用表示。
Ergo:404 Not Found
404(未找到)状态代码表示源服务器未找到目标资源的当前表示,或者不愿意透露该目标资源是否存在。
您的原始服务器碰巧采用提供的URI并将其映射到处理程序这一事实与其密切相关。
请注意,您无需让客户端处于黑暗状态
状态代码的4xx(客户端错误)类表示客户端似乎有错误。除了在响应HEAD请求时,服务器应该发送一个表示,其中包含错误情况的解释,以及它是暂时的还是永久的。
在这种情况下,该表示可以解释hp
不受支持,如果您想让客户有机会对其进行投票,则提供相关跟踪问题的链接,等等。