return 字符串文字而不是 POST 和 DELETE 方法的值对象是不好的做法吗?

Is it bad practice to return a String literal instead of a Value Object for POST and DELETE methods?

如果您处于微服务架构中,其中业务用户需要管理员功能来为该服务从数据库中添加和删除项目,并且想要一条消息说明操作是否成功,那么不仅仅是 201 响应。

当您返回 POST 和 DELETE 的响应时,首选的行业惯例是什么?发回字符串消息说明成功与否?或者拥有一个带有成员字符串消息并返回 getter/setter 的新值对象会更好,它可以被序列化并返回到用户将看到的响应中?

有没有更好的方法,还是没有关系?

视情况而定。

HTTP 响应的 message-body 在语义上是 消息

200 OK
Content-Type: text/plain

IT WORKED

当消息接收者是人类时,使用纯文本消息很好,因为人类在语义上是灵活的。熟悉美式英语的人会理解该消息,如果您稍后决定将其更改为不那么刺耳的拼写,收件人可能能够理解。

当机器阅读消息时,纯文本变得不太令人满意——当您需要更改消息时就会出现问题,如果没有结构,机器将很难找到他们需要的内容。

如果您查看上面的示例,header(包括 status-line)符合大约 20 年前设计的架构。 HTTP 客户端知道如何解析 header,并识别他们关心的 header,等等,因为对于如何将信息编码到 header 中有一个明确指定的模式的响应。

在短期内,您可以定义一个架构,其中 "IT WORKED" 是可能的响应之一,每个人都可以根据该架构编写他们的程序。

但是当您需要扩展架构以包含更多信息时?你能在不破坏老客户的情况下满足你未来的需求吗?

另一方面,如果升级所有客户端并不昂贵(因为它们都在您的直接控制之下?),那么您可能还不需要可扩展的消息模式。