QCon北京「鸿蒙专场」火热来袭!即刻报名,与创新同行~ 了解详情
写点什么

什么时候 POSTing 状态合适?

  • 2009-04-23
  • 本文字数:1292 字

    阅读完需:约 4 分钟

一篇文章中, Tim Bray,审视了 Sun Cloud API 的第一版公众草稿所收到的反馈。 对于其中一些反馈他在文中作出了回应,对于如何对交互进行建模,例如以 RESTful 的方式创建一个 VM 集群,进行了探索。

他展示了在设计 Sun Cloud API 范畴中的几个场景,并问到用 POSTing 状态来建模这样的交互是否是一种合适的策略。

但你不是真正的在改变状态,你是在请求一系列特定动作的执行,作为其结果,该状态是否能获得期望的值皆有可能。实际上,当你触发部署开关,状态变为了部署中,在不可预知的一段时间之后,又改变为已部署。而重启操作这一经典例子,就是在机器旁边有一个红色的大开关,问题是如何按这个开关。

所以啊,我越想越觉得,这些资源就像是按钮,只有唯一定义的操作:按下。人们对于“只写资源”牢骚满腹,但我却觉得不存在什么问题,因为这非常准确。重启和停止按钮实际上没有任何状态,所以你不应该期待 GET 操作能得到什么有用的东西。

Bill de hóra 在 对这篇文章的回应中提供了例子,来说明 PUT 和 POST 两者何时相对于另一方来说更为合适。

什么时候 PUT 与 POST 的比较才真正有影响?据我所知,当你的资源代表着一个集合时,它是有影响的,而这也很普遍-文件夹,专辑列表,订阅种子,收集物,博客,标签云,订单,购物车-任何基于列表的结构。

他同时还展现了关于整个讨论更加实用的方面,并建议将 POSTting 表单作为一种可能的解决方案。

另一方面,很多很多人不会,不想,(有时候也不能)去关心 REST/HTTP/AtomPub 的秘密。所以我也考虑到我们需要模式和实践来帮助开发者上手。

但是到目前为止我并不确认在我们支持 REST 的社区阵营里对于部分的更新资源已经有了一个很好的普遍答案或是设计模式。除非是这样,不然我推测人们还是会回到使用表单 posting,因为它是最为简单和兼容的部署客户端库和 web 框架的方式。要不就这样。要不就为部分更新定义一些特定的媒体类型。

Roy Fielding 也对这篇文章作出了回应

在我的论文中没有特指的主要原因,是因为这些方法是作为 Web 架构定义的一部分,由 HTTP 来定义的,而不是 REST 架构风格(所定义的)。特定的方法定义 […] 对 REST 架构风格没有影响,所以对它们进行风格讨论非常困难。REST 对方法的唯一要求就是它们需要为所有的资源有着统一的定义 (例如,中介不必需要去了解资源的类型就可以理解请求的含义)。

只有当 POST 被用在有其它的方法理想适用的场合,才是一个问题。其它的方法对中介更有价值,因为它们说明了失效如何被自动处理以及中间缓存如何去优化它们的行为。POST 不具备这些特点,但这并不意味着我们离得开它。POST 在 HTTP 里为许多有用的目的而服务,包括主要目标:“这一行为不需要符合于标准。”

Roy 作出了总结:

我们没必要对于 HTTP 的每个状态改变都使用 PUT。REST 从没说过我们应该这样。[…] 我个人的话,对这些按钮我就使用 POST。API 可以对使用 POST 作出补偿,可以在响应中表示客户端应当刷新对更大资源状态的表象。换句话说,我会返回一个 303 响应,重定向回 VM 状态,这样客户端就知道状态已经改变了。

这里有原文, 以及社区的所作出的回应。

查看英文原文: When Is POSTing State Appropriate?

2009-04-23 02:531268
用户头像

发布了 133 篇内容, 共 39.3 次阅读, 收获喜欢 1 次。

关注

评论

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

In-depth analysis of IPQ4028 and IPQ4029 chips: medium and high-end network processors

wifi6-yiyi

wifi ipq4029

什么是企业全历史行为数据?为什么它是ToB大客户营销的最佳助手?

客户在哪儿AI

ToB营销 ToB获客 大客户营销 企业全历史行为数据

2024益普索Ipsos全球人工智能监测报告

财见

kepserver基础 创建opc ua server,进行匿名登录

万里无云万里天

工业控制 kepserver OPCUA

云启AI,数领未来|Zilliz 华北地区高层闭门会圆满结束

Zilliz

程序员 AI Milvus Zilliz 向量数据库

“算法票友”搭档“技术博主”,他们说算子开发就像玩游戏打怪

Alter

AI 算法 算子

英特尔联合国际奥委会打造AI聊天机器人,助力多国运动员迎战巴黎奥运会

E科讯

NFTScan 浏览器现已支持 .mint 域名搜索功能!

NFT Research

blockchain NFT NFT\

CX1概念车空气动力学设计,打造典型“美式肌肉车”风格

Altair RapidMiner

人工智能 汽车 仿真 车企数字化 altair

从“+AI”到“AI+”,英特尔与生态伙伴共推AI大模型应用落地

E科讯

modbus slave基础 查看四个地址范围的占位特点

万里无云万里天

工业控制 Modbus协议

rabbitmq-server基础 mqttfx连接server

万里无云万里天

RabbitMQ IoT mqtt

rabbitmq-server基础 windows安装rabbitmq-server,启用mqtt服务

万里无云万里天

windows RabbitMQ mqtt

Claude 3.5、GPT-4o最新系统指令大揭秘!

蓉蓉

Claude gpt4o

Adobe Illustrator 和 Photoshop 迎来新 AI 功能;马斯克将训练全球最强 AI丨 RTE 开发者日报

声网

37GAMES Nova(AI-CodeReview)介绍

三七互娱后端技术团队

AI CodeReview

求职季来了,让通义灵码陪你高效备战

阿里云云效

阿里云 云原生 通义灵码

modsim32笔记 启动modbus tcp服务

万里无云万里天

Modbus Modbus Tcp modsim

观测云加入华为云「新加坡云联盟」,引领亚太创新潮流

观测云

监控

XIAOJUSURVEY的Vue3升级之路

XIAOJUSURVEY

前端 vite Vue 3 VueRouter Pinia

美航通过 NocoBase 节省了 70% 的物流系统升级成本

NocoBase

开源 系统设计 低代码 无代码开发

线上交流会预告!和鲸科技社区合伙人唐铭分享“学科+AI”课程搭建思路

ModelWhale

AI 直播 教学 分享会

Go 语言 context 包实践

FunTester

怎么在PPT中插入视频?3个PPT常用的使用技巧分享!

彭宏豪95

人工智能 效率工具 PPT AIGC AI生成PPT

天猫商品评论接口:从申请到应用全攻略

tbapi

天猫商品评论接口 天猫API 天猫评论数据接口 天猫评论数据采集 天猫评论API

天猫店铺商品数据接口集成指南与实战技巧

tbapi

天猫API接口 天猫店铺所有商品接口 天猫店铺整店商品接口 天猫店铺商品数据采集

Kmesh v0.4发布!迈向大规模 Sidecarless 服务网格

华为云开发者联盟

云计算 云原生 华为云开发者联盟 企业号2024年7月PK榜

数据分析新贵——DuckDB入门

三七互娱后端技术团队

数据分析 duckdb

求职季来了,让通义灵码陪你高效备战

阿里巴巴云原生

阿里云 云原生 通义灵码

erlang基础 windows系统安装erlang

万里无云万里天

erlang 测试环境

什么时候POSTing状态合适?_SOA_Dilip Krishnan_InfoQ精选文章