【AICon】 如何构建高效的 RAG 系统?RAG 技术在实际应用中遇到的挑战及应对策略?>>> 了解详情
写点什么

RESTful JSON Web 服务最佳实践

  • 2009-05-14
  • 本文字数:1056 字

    阅读完需:约 3 分钟

Collaxa BPEL 产品 - 后来成为 Oracle SOA 战略核心的一部分 - 背后的关键人物之一, Edwin Khodabakchian ,已经单独致力于 Feedly 这一“将 twitter 和 Google Reader 编织成杂志一般的体验”的项目好几年了。最近 Edwin 发布了一本关于构建基于 JSON 的 Web 服务最佳实践的 cookbook。当然这还在进行当中,但现有提供的指南包括了:

第一阶段 - 定义一个简单的资源 / 服务 | 选一个示例资源比如客户信息,用 JSON 来对其建模。构建一个简单的 servlet,以 PUT 来创建一个新客户,以 GET 基于客户键值返回客户信息,以 DELETE 删除客户,以 POST 更新客户信息。保证 PUT 返回的是关于新创建资源 URL 的正确信息。在我们的案例中,我们有一个将 JSON 映射到 Java 模型的框架,使用 Hibernate 在 MySQL 数据库中对这一模型作持久化存储。这一阶段的关键是,用 JSON 正确的表示,并且基本 url 要有简单整洁的格式。

还有:

第三阶段-加入验证 | 修改你的服务实现为通过 PUT 和 POST 所收到的 JSON 资源加入一些数据验证。学会如何使用 HHTP 错误代码来定义和转移异常信息。学会如何在客户端处理这些异常。这一阶段的关键是保证你知道现在的 HTTP 错误代码,在适当的时候重用它们,并且在需要的时候创建符合于 HTTP 的新代码。

现在正在著述中的有 7 个不同的阶段,其范围从我们提到的第一个,到认证,到生命周期。看到来自现实经验的指南一直都是非常棒,而且 Edwin 试图覆盖到在过去毫无疑问曾给它带来困难的问题,比如:

有很多库可用以帮助你抽象 XMLHTTPRequest。选择一个可以跨浏览器的。选择一个足够透明,能让你看到你所调用的 GET,POST,PUT 和 DELETE 操作的。

或者:

为业务事件定义合适的粒度和合适的类型不是那么容易。你也许需要几次的迭代才能把它做好。我的建议是不要过度设计:尽量保持简单并且出现新用例时进行重构。

对于 REST 许多其支持者认为是理所当然的方面 ,当然也作出了参考,比如:

第五阶段 - 添加缓存 | Web 基础设施提供了丰富的缓存机制 (最后修改信息,缓存持续期,eTag)。学习机制并看看你是否能利用它们来提升服务的性能与伸缩性。

Edwin 同时还涉及了一些非常实践的方案,这些方案也许乍一看是有背于 REST/HTTP 原则的:

一些服务器不允许 DELETE,这一种情况下你得学会如何用方法重写来 POST。

根据 Edwin 的说法,他们正在考虑将其后端的一些基础设施开源出来。在些之前 FriendFeed API 的文档是可获得的。随着 JSON+REST 的逐渐流行,这必将是本有趣的 cookbook,以供开发者考虑和利用。

查看英文原文: Best Practices for RESTful JSON Web Services

2009-05-14 10:105710
用户头像

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

关注

评论

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

全景剖析阿里云容器网络数据链路(五):Terway ENI-Trunking

阿里巴巴云原生

阿里云 容器 云原生

应用纳管和灰度发布:谐云基于 KubeVela 的企业级云原生实践

阿里巴巴云原生

阿里云 容器 云原生 KubeVela

架构实战营模块5 高性能高可用计算作业

西山薄凉

「架构实战营」

软件测试 | web端常见bug解析

测吧(北京)科技有限公司

测试

解读 Java 云原生实践中的内存问题

阿里巴巴云原生

Java 阿里云 云原生

vue实现一个鼠标滑动预览视频封面组件(精灵图版本)

JYeontu

Vue 视频

SpringBoot动态配置文件及项目打包部署

微枫Micromaple

maven Profile springboot 部署 项目上线

docker setup mysql

平凡人生

MySQL

核心应用实现云原生改造升级,波司登数字化战略加速落地

阿里巴巴云原生

阿里云 云原生

基于SLO告警(Part 4):开源项目 pyrra 使用

Grafana 爱好者

云原生 可观测性 Prometheus SRE SLO

IntelliJ IDEA 撤销和反撤销

HoneyMoose

从 JDK 9 到 19,我们帮您提炼了和云原生场景有关的能力列表(上)

阿里巴巴云原生

阿里云 云原生

Java 中如何限制方法的返回时间

HoneyMoose

渲染速度慢,使用云渲染会快多少?

Renderbus瑞云渲染农场

云渲染 渲染慢怎么办?

为什么在容器中 1 号进程挂不上 arthas?

阿里巴巴云原生

Java 阿里云 容器 云原生

Higress + Nacos 微服务网关最佳实践

阿里巴巴云原生

阿里云 云原生 nacos Higress

突破边界:“超融合+”带来的商业化精益之路

脑极体

技术服务深耕本地市场:阿里云在日本的探索与实践|国家经理专栏

阿里巴巴云原生

阿里云 云原生

现货合约量化交易系统开发机器人策略

薇電13242772558

量化

API Explorer 进阶之路 | 一篇文章快速入门!

华为云PaaS服务小智

ONES 支持多项信创适配,打造自主可控的国产化平台

万事ONES

CleanMyMac X2023电脑最新版本更新内容

茶色酒

CleanMyMac X CleanMyMac X2023

试试 IntelliJ IDEA 新的 UI

HoneyMoose

IntelliJ IDEA 修改只读模式和可写模式

HoneyMoose

软件测试 | JavaScript如何使用

测吧(北京)科技有限公司

测试

云原生微服务应用平台 EDAS 2022 年度报告

阿里巴巴云原生

阿里云 微服务 云原生

Relocating the Docker root directory

平凡人生

Docker

2022阿里云技术年报:基础产品篇

阿里巴巴云原生

阿里云 云原生 基础产品

ChatGPT真的可以取代基础工作岗位吗?

老张

人工智能 产业发展 ChatGPT

推进行业生态发展完善,中国信通院第八批RPA评测工作正式启动

王吉伟频道

RPA 机器人流程自动化 中国信通院 RPA评测 RPA产业推进方阵

重磅发布丨《云原生实战指南》助力企业上云实践!

阿里巴巴云原生

阿里云 云原生实战

RESTful JSON Web服务最佳实践_SOA_Mark Little_InfoQ精选文章