rest - 是一个 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}
解决方案
让端点接受一个空的 POST 请求就可以了。如果这在您的上下文中具有合理的含义,那是完全有效的。听起来这会创建一个新的编号资源,它不需要任何参数即可创建,因此用例非常好。您可能会或可能不会使用更好的整体设计,而不是在没有参数的情况下创建新资源的设计,但如果不了解更多细节,没有人能说出来。
至于返回纯文本内容,如果它对您的用例有意义,这通常也是完全有效的。在您的 API 中保持一致是一个好主意,但没有内在的技术需求。例如,如果您的某些端点返回二进制数据(例如,PDF 文件),那么为了一致性起见,将其包装在 JSON 或 XML 或其他任何内容中绝对是零意义的。因此,跨 API 的混合响应类型通常没有问题。
话虽如此,如果您的一些端点返回 JSON 和其他 XML 以及其他明文,这可能会让 API 的使用者感到困惑和烦人,因为他们需要预测各种不同的响应格式,这比仅需要期待一种响应格式。
推荐阅读
- php - PHP Mailer - 接收垃圾邮件
- c# - 构建动态字符串
- javascript - 扩展类时使用 super() 的区别
- c - 如何停止一个计数器变量,该变量保持对先前 for 循环中的值进行计数?C程序
- rust - Actix-web:向数据库处理程序发送消息,有条件地向第二个处理程序发送消息
- shopify - 如何使用 App-Bridge 打开和关闭 Shopify Polaris Modal
- javascript - 隐藏的引导通知阻止按钮
- java - AWS Device Farm - 不是黄瓜功能路径的文件或目录
- c# - ASP.NET Core 在运行时替换单例实例
- c# - 为什么我可以对元素的类属性进行“包含”调用,但不能对其他属性(如带 XPath 的 href)进行调用?