此GET调用是否应返回带有正文的204或200?

时间:2019-04-25 17:11:03

标签: rest api http-status-codes

说我们有一个rest api,它聚合了来自其他服务的有关Person的数据。聚合器服务路线之一是GET /person/(person id)/driverinfo,它告诉我们该人是否是有执照的驾驶员,执照ID,执照的到期日期和交通违规次数。聚合器可以从一项或多项其他服务中获取这些数据。网页将使用此api来显示有关某人的“驾驶员信息”。还将进行自动化测试。

当前,该api对于从未获得驾驶执照的人不提供204内容响应。这是因为基础api之一为此场景提供了204。因此,决定聚合器也应该这样做。

但是,我认为这不是一个好的回应。相反,我们应该为字段返回200,并带有适当的值。例如,当基础api给出204时,license = false,licenseId = N.A.等。聚合器应生成这些字段及其值。

您认为哪种方法更好?为什么?

1 个答案:

答案 0 :(得分:1)

204表示HTTP中特定的内容;它表示服务器找到了所请求资源的表示形式,并且该表示形式的长度为零字节。

因此,真正的问题更像是“我们应该使用零字节长的消息来描述情况吗?”。也许?如果消息模式中的所有字段都是可选的,并且我们试图描述一种表示所有字段都采用其默认值的表示形式,则零字节数组可能是传达此信息的正确方法。

特别是在HTTP上下文中,标头本身的长度已经很大(与零相比),因此我不希望有特别令人信服的性能原因将信号压缩为零长度。例如,如果我们通常绕过application/json,我希望发送一个空的对象或数组比什么都不发送要更具成本效益。

相关问题