硬核干货——《中小企业 AI 实战指南》免费下载! 了解详情
写点什么

定制媒体类型的扩增符合 RESTful 吗?

  • 2010-01-13
  • 本文字数:932 字

    阅读完需:约 3 分钟

Subbu Allamaraju 在博客中重温了 REST 社区中的久辩不衰的话题(标准媒体类型和定制媒体类型的比较)并试图寻找使用他们的最佳实践。开篇他就提出了媒体类型使用相关的两分观点。

  • 观点 1:Web 服务必须要使用标准媒体类型才符合 RESTful。
  • 观点 2:定制媒体类型如同契约,对于维护交互可视性是至关重要的。

Subbu 认为,若严格参考的话,观点 1 是来自 Roy Fielding 的论文中的一句话,“使用像 application/vnd.example.myway+xml 这样的媒体类型不符合 RESTful”。而他认为理解这些媒体类型在实际使用时产生的影响要比从字面上听从论文的谕旨更为重要。然而,有人回复说,对论文的这样理解本身也是有争议的。

另一方面,他说,观点 2 通过使用定制媒体类型带来协议一级的消息可视性。

[…] 例如,假设一个表象使用 application/xml 去描述一个订单或影集,谁能知道它到底是哪个呢?而如果 Web 服务使用以下这样的媒体类型, application/vnd.example.po 或 application/vnd.example.album,那么任何人都能够理解该表象的语义,而根本不需要对表象体进行解析。按照这种思路,媒体类型是一种消息语义标识符,消息接收者可使用该媒体类型触发处理代码。

那么,怎样才是正确的做法呢?,他问到,然后他提出了自己的观点,希望能够找到一种较民主的最佳实践。

  • 如果发送者使用标准的可扩展格式(如 XML 或 JSON)描述表象,那么就使用标准的媒体类型,如 application/xml 和 application/json。
  • 如果消息格式新发明的,那么就创建新的媒体类型。
  • 如果只是寻找某种方式来传输 XML 或 JSON 消息的应用层语义,那么使用别的手段(如,XML 命名空间和规范)。
  • 如果目标是版本控制,则使用 URI 中的版本标识。

通过一个类 Java 语言的例子,他断言,尽管你可以从消息里面看到请求是如何处理的,但这却破坏了可视性。

就处理 XML 和 JSON 消息而言,形如 application/xml 和 application/json 的媒体类型已经足够了。[…] 基于 URI 的方式必须穿越整个协议栈。为了“架构纯粹性”或“ RESTful 约定”而忽视真实世界的互操作性最终将引火自焚。

Subbu 想通过该博文展示的解决方法是架构纯性和真实互操作性之间的合理平衡点吗?请一定看看原博文并加入你的观点。


查看英文原文: Is Proliferation Of Custom Media Types RESTFul?

2010-01-13 00:111599
用户头像

发布了 184 篇内容, 共 87.8 次阅读, 收获喜欢 8 次。

关注

评论

发布
暂无评论
发现更多内容

Redis Desktop Manager (RESP) mac数据库管理工具

Rose

2025 开源之夏开启报名|AI + 云原生,10个开源项目、24个课题任您挑选

阿里巴巴云原生

阿里云 开源 云原生

AlmaLinux 9.6 正式版发布 - RHEL 二进制兼容免费发行版

sysin

AlmaLinux

java哪有这细糠啊,PHP是世界上最好的语言!

程序员郭顺发

龙蜥开发者说:200+PR 背后的成长,且看他在社区的开源故事 | 第 31 期

OpenAnolis小助手

操作系统 龙蜥社区 龙蜥开发者说

IBM 研究:CEO们在应对企业挑战的同时加码AI投入

财见

从校园实验室到京东零售:一位算法工程师的风控实战录

京东科技开发者

VMware vCenter Server 9.0 下载 - 集中管理 vSphere 环境

sysin

vcenter

VMware vSphere 9.0 下载 - 企业级工作负载平台

sysin

vSphere

反转链表(花式反转)

不在线第一只蜗牛

数据结构 算法 链表

RPA机器人流程自动化如何优化人力资源工作流程

Techinsight

人力资源 RPA评测 人力资源管理

HR 必看!RPA 如何帮你从繁琐人资工作中 “解脱”?

Techinsight

人力云 人力资源产业

高效缓存的10条军规

电子尖叫食人鱼

缓存

龙蜥操作系统衍生版 KOS 助力云天化石化打造卓越智能工厂 | 龙蜥案例

OpenAnolis小助手

操作系统 龙蜥社区 龙蜥案例 Anolis OS

苹果电脑分屏办公怎么用?mac分屏办公就用 magnet

Rose

Redisson读写锁和分布式锁的项目实践

量贩潮汐·WholesaleTide

分布式

科研数学软件:MATLAB R2024a完整版安装教程

Rose

提高IT运维效率,深度解读京东云基于自然语言处理的运维日志异常检测AIOps落地实践

京东科技开发者

F5《2025年应用战略现状》报告:AI 落地加速,企业战略从讨论迈向行动

科技热闻

阿里巴巴 MCP 分布式落地实践:快速转换 HSF 到 MCP server

阿里巴巴云原生

阿里云 云原生 Higress

科研党必备!FlowJo 10 助力流式细胞术分析,一键出图,拒绝繁琐

Rose

奥特斯在充满挑战的市场环境中实现营收增长

财见

兼容M1的数据分析软件Minitab Express for Mac

Rose

AutoCAD 2019中文版(附安装教程图解)-Mac/win

Rose

基于 AST 的全栈代码生成技术白皮书

代码制造者

可视化开发 抽象语法树AST

高效办公!Paste for Mac 剪贴板神器!

Rose

Google推出XR眼镜,DePIN 将驱动下一代空间计算

PowerVerse

技术 去中心化 算力 web3 DePIN

【CodeBuddy】三分钟开发一个实用小功能之:可爱风空调遥控器

jimaks

CSS

VMware ESXi 9.0 下载 - 领先的裸机 Hypervisor

sysin

esxi

提高IT运维效率,深度解读京东云AIOps落地实践(异常检测篇)

京东科技开发者

RPA机器人如何确保敏感数据的安全性

Techinsight

数据安全 #数据

定制媒体类型的扩增符合RESTful吗?_SOA_Dilip Krishnan_InfoQ精选文章