最新发布《数智时代的AI人才粮仓模型解读白皮书(2024版)》,立即领取! 了解详情
写点什么

定制媒体类型的扩增符合 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:111121
用户头像

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

关注

评论

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

架构实战 1 - 微信业务架构图-学生管理系统技术选型

架构实战营 「架构实战营」

架构训练模块1

KING

FL Studio21正式版本发布更新附送85款主题下载

茶色酒

FL Studio 21 FL Studio21

模块一作业

unique

架构--模块七 作业

李某人

架构训练营

携程全球合作伙伴峰会商旅分论坛:以五大中心构建“人数智”服务能力体系

携程商旅

架构实战营-模块一作业

氢原子

#架构实战营

架构实战营模块一_作业

原城

架构实战营 #架构实战营 架构师实战营 「架构实战营」

2022-12-07:删除重复的电子邮箱。删除重复数据后,id=3的数据被删除。请问sql语句如何写? DROP TABLE IF EXISTS `person`; CREATE TABLE `per

福大大架构师每日一题

数据库 福大大

阿里云祝顺民:生而为云,连接增长

云布道师

阿里云 云网络

结合RocketMQ源码说说并发编程的三大神器

程序员小毕

源码 程序员 RocketMQ 后端 架构师

重写事件抛发接收机制原理

千锋IT教育

设计原则

Lemoon Can

面向对象设计原则 设计原则

模块一作业

陈天境

SCRM是什么,SCRM和CRM区别?

优秀

CRM scrm

数据库到底应该如何存储密码?

Java永远的神

数据库 程序员 程序人生 后端 架构师

面试常问的高并发系统设计,我们到底该怎么学?

程序员小毕

程序员 面试 后端 高并发 架构设计

全面进化!Apache Doris 1.2.0 Release 版本正式发布|版本通告

SelectDB

数据库 大数据 开源 数据分析 Doris

微信业务架构图 & 学生系统技术架构图

白杨

掌握高并发系统设计,面试弯道超车

小小怪下士

Java 面试 系统设计 后端 高并发

flex弹性盒子中flex-grow与flex的区别

千锋IT教育

【沙丘大会回顾】九科信息研发中心自动化负责人郑文茂分享央企数字员工实践案例

九科Ninetech

如何通过“推送文案的千人千面”有效提升用户转化和留存

极光JIGUANG

极光推送 用户运营

Flink架构与应用漫聊

数新网络官方账号

百亿节点、毫秒级延迟,携程金融基于 NebulaGraph 的大规模图应用实践

NebulaGraph

风控 风控模型 电商风控

提供多种数据看板,瓴羊Quick BI全面提升企业可视化分析能力

小偏执o

架构训练营模块一作业

现在不学习马上变垃圾

#架构实战营

主数据管理实施四部曲概论

用友BIP

无刷直流电机最强科普(收藏版)

元器件秋姐

发展史 电机 BLDC应用 电子工程师 无刷直流电机

ChatGPT 加图数据库 NebulaGraph 预测 2022 世界杯冠军球队

NebulaGraph

图数据库 世界杯 AI预测

FL Studio2023新版本功能爆料将引入4款全新插件!创作力UP!

茶色酒

FL Studio

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