2025上半年,最新 AI实践都在这!20+ 应用案例,任听一场议题就值回票价 了解详情
写点什么

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

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

关注

评论

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

响应式编程到底是什么?

博文视点Broadview

Java 响应式 响应式编程 reactor 并发

众盟科技2020智能化白皮书:穿越新商业周期,读懂商业智能化的真义

脑极体

船长梁晓玲的猎鹰号真的能赚钱嘛?不分析不知道……

成周

心理学 船长梁晓玲 诈骗

高并发下为什么更喜欢进程内缓存

架构师修行之路

缓存 架构设计

架构师训练营 - 第 2 周学习总结(1 期)

阿甘

分布式高并发下Actor模型如此优秀

架构师修行之路

系统设计 reactor 高并发

Spring系列之新注解配置+Spring集成junit+注解注入

Java spring 微服务 架构师

架构师训练营 - 第 2 周课后作业(1 期)

阿甘

第6周作业

方堃

添加字幕哪个视频剪辑软件比较简单?

奈奈的杂社

视频创作 视频剪辑 视频后期 自媒体 后期字幕

架构师训练营第 1 期 第 1 周作业

李循律

c++杂谈-1

菜鸟小sailor 🐕

c++

甲方日常 20

句子

工作 随笔杂谈 日常 Java 25 周年

译文|简明指南:Apache Pulsar 的分层存储

Apache Pulsar

开源 云原生 存储分离 Apache Pulsar 消息中间件

Redis 发布订阅,小功能大用处,真没那么废材!

楼下小黑哥

Java redis spring

救人于无形的“环境智能”,到底是一种什么智能?

脑极体

判断一个请求是否是Ajax异步请求

麦洛

ajax

看动画学算法之:排序-count排序

程序那些事

动画 看动画学算法 看动画学数据结构 count排序

超越色彩的魅力:读《黑白适界》

北风

艺术 摄影 黑白 摄影征文 画册

LeetCode题解:145. 二叉树的后序遍历,递归,JavaScript,详细注释

Lee Chen

大前端 LeetCode

网站日志分析最完整实践

MySQL从删库到跑路

第7周的总结

Vincent

极客时间 极客大学

oeasy 教您玩转 linux 010400 总结 summary

o

一夜爆火,只因阿里内部作为参考的SpringBoot巅峰之作git开源

小Q

Java 架构 面试 微服务 springboot

第7周作业

Vincent

极客时间 极客大学

一个草根的日常杂碎(9月22日)

刘新吾

生活 随笔 记录

架构师训练营第 1 期 -week2

习习

第2周

Geek_fabd84

时空碰撞优化系列·二

誓约·追光者

hive Sparksql 计算效率 优化

架构师训练营 1 期第 2 周:框架设计 - 作业

piercebn

极客大学架构师训练营

微前端qiankun从搭建到部署的实践

fengxianqi

大前端 微应用

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