这个 GET 应该用 body 调用 return 204 还是 200?
Should this GET call return 204 or 200 with a body?
假设我们有一个 rest api,它从其他服务聚合有关某个人的数据。聚合器服务路线之一是 GET /person/(person id)/driverinfo
,它告诉我们此人是否有执照 driver、执照 ID、执照到期日期和交通违规次数。聚合器可以从一项或多项其他服务中获取这些数据。这个 api 将被网页用来显示一个人的 "driver info"。它还将通过自动化进行测试。
目前,api 为从未拥有驾驶执照的人提供 204 无内容响应。这是因为其中一个基础 apis 为该场景提供了 204。因此,决定聚合器也应该这样做。
但是,我认为这不是一个好的回应。相反,我们应该 return 200 为字段提供适当的值。例如,licensed=false,licenseId = N.A。等当基础 api 给出 204 时。即聚合器应生成这些字段及其值。
您认为哪种方法更好,为什么?
204 表示 HTTP 中特定的内容;它说服务器找到了所请求资源的表示,并且该表示的长度为零字节。
因此,真正的问题更像是“我们应该使用零字节长的消息来描述一种情况吗?”。或许?如果您的消息模式中的所有字段都是可选的,并且我们正在尝试描述一种表示,这意味着所有字段都采用其默认值,那么零字节数组可能是传达该信息的正确方式。
特别是在 HTTP 的上下文中,headers 本身的长度已经很长(与零相比),所以我不希望有特别令人信服的性能原因将信号压缩到零长度。例如,如果我们通常传递 application/json,我希望发送一个空的 object 或数组比什么都不发送更具成本效益。
假设我们有一个 rest api,它从其他服务聚合有关某个人的数据。聚合器服务路线之一是 GET /person/(person id)/driverinfo
,它告诉我们此人是否有执照 driver、执照 ID、执照到期日期和交通违规次数。聚合器可以从一项或多项其他服务中获取这些数据。这个 api 将被网页用来显示一个人的 "driver info"。它还将通过自动化进行测试。
目前,api 为从未拥有驾驶执照的人提供 204 无内容响应。这是因为其中一个基础 apis 为该场景提供了 204。因此,决定聚合器也应该这样做。
但是,我认为这不是一个好的回应。相反,我们应该 return 200 为字段提供适当的值。例如,licensed=false,licenseId = N.A。等当基础 api 给出 204 时。即聚合器应生成这些字段及其值。
您认为哪种方法更好,为什么?
204 表示 HTTP 中特定的内容;它说服务器找到了所请求资源的表示,并且该表示的长度为零字节。
因此,真正的问题更像是“我们应该使用零字节长的消息来描述一种情况吗?”。或许?如果您的消息模式中的所有字段都是可选的,并且我们正在尝试描述一种表示,这意味着所有字段都采用其默认值,那么零字节数组可能是传达该信息的正确方式。
特别是在 HTTP 的上下文中,headers 本身的长度已经很长(与零相比),所以我不希望有特别令人信服的性能原因将信号压缩到零长度。例如,如果我们通常传递 application/json,我希望发送一个空的 object 或数组比什么都不发送更具成本效益。