首页 > 解决方案 > 是一个 POST 请求,正文为空,响应为纯 ID 值,文本格式为 RESTful

问题描述

在我们使用基于jax-rs的框架的REST API项目中,有一个客户端点

customer/

该端点有一个带有空输入主体的POST方法,状态为 SUCCESS (201)的响应只是一个自动生成的纯文本格式的 ID 值,既不是JSON也不是XML

问题1:在RESTful API中使用空输入体发出POST请求是否正常?

问题2:仅返回纯文本格式的值的实现仍然是有效的RESTful API吗?这种实现是一个好习惯吗?这种实施有什么问题?如何改进它?就我个人而言,我真的对这种实现感到奇怪,但我真的无法说出它的问题

如果我实现 POST 方法,我可能会返回 JSON 或 xml 格式的响应,而不是纯文本值,例如:

{id: 1234567}

标签: restjax-rsrpc

解决方案


让端点接受一个空的 POST 请求就可以了。如果这在您的上下文中具有合理的含义,那是完全有效的。听起来这会创建一个新的编号资源,它不需要任何参数即可创建,因此用例非常好。您可能会或可能不会使用更好的整体设计,而不是在没有参数的情况下创建新资源的设计,但如果不了解更多细节,没有人能说出来。

至于返回纯文本内容,如果它对您的用例有意义,这通常也是完全有效的。在您的 API 中保持一致是一个好主意,但没有内在的技术需求。例如,如果您的某些端点返回二进制数据(例如,PDF 文件),那么为了一致性起见,将其包装在 JSON 或 XML 或其他任何内容中绝对是零意义的。因此,跨 API 的混合响应类型通常没有问题。

话虽如此,如果您的一些端点返回 JSON 和其他 XML 以及其他明文,这可能会让 API 的使用者感到困惑和烦人,因为他们需要预测各种不同的响应格式,这比仅需要期待一种响应格式。


推荐阅读