[RESTful web services读书笔记] 接口设计中维持XML和JSON表述的兼容性

简介: 分布式的客户端/服务器环境中必然涉及到变更管理,如何维护系统的可扩展性和兼容性? 问题描述:需求是持续变化的,在通常的接口设计中,如何保证服务端XML和JSON表述的变更与现有的客户端保持兼容 解决方案:保持原有的XMl和JSON数据分层结构整体不发生变化,确保客户端按照之前的调用方法可以继续工作 服务端需要把新增的数据元素设计为可选的,以此保持与客户端的兼容性,相对于URI来说,就是URI中添加了新参数时,要继续服务于现有参数,并将新参数视为可选 不要修改删除原有的响应正文表述的数据域  PS: REST架构风格的最主要驱动是分布性和扩展性。

分布式的客户端/服务器环境中必然涉及到变更管理,如何维护系统的可扩展性和兼容性?

问题描述:需求是持续变化的,在通常的接口设计中,如何保证服务端XML和JSON表述的变更与现有的客户端保持兼容

解决方案:保持原有的XMl和JSON数据分层结构整体不发生变化,确保客户端按照之前的调用方法可以继续工作

服务端需要把新增的数据元素设计为可选的,以此保持与客户端的兼容性,相对于URI来说,就是URI中添加了新参数时,要继续服务于现有参数,并将新参数视为可选

不要修改删除原有的响应正文表述的数据域

 PS:

REST架构风格的最主要驱动是分布性和扩展性。RESTful HTTP接口的设计是由网络因素而非编程语言的绑定驱动的

参考:RESTful web services Cookbook 中文版

 

ps 后记

这篇文章提到了兼容性设计的重点,对原有设计的扩充和维护是一件很困难的事,因为原有系统还在运行,所以你只能做扩充,不能做改造,改造的风险巨大且未知

这样一来代码结构,数据库设计,等都会出现混乱和复杂。比如代码风格不统一,随意的增加和补充,数据库字段冗余,很多字段不知道是否在实际业务中还在使用,是否在维护

2013-02-02 补充

 

目录
相关文章
|
3月前
|
Java API 数据库
构建RESTful API已经成为现代Web开发的标准做法之一。Spring Boot框架因其简洁的配置、快速的启动特性及丰富的功能集而备受开发者青睐。
【10月更文挑战第11天】本文介绍如何使用Spring Boot构建在线图书管理系统的RESTful API。通过创建Spring Boot项目,定义`Book`实体类、`BookRepository`接口和`BookService`服务类,最后实现`BookController`控制器来处理HTTP请求,展示了从基础环境搭建到API测试的完整过程。
63 4
|
4月前
|
XML 存储 JSON
Twaver-HTML5基础学习(19)数据容器(2)_数据序列化_XML、Json
本文介绍了Twaver HTML5中的数据序列化,包括XML和JSON格式的序列化与反序列化方法。文章通过示例代码展示了如何将DataBox中的数据序列化为XML和JSON字符串,以及如何从这些字符串中反序列化数据,重建DataBox中的对象。此外,还提到了用户自定义属性的序列化注册方法。
52 1
|
2月前
|
存储 JSON 安全
如何使用 JSON Web Tokens 进行身份验证?
总的来说,JWT 是一种强大而灵活的身份验证方式,通过正确使用和管理,可以为应用提供可靠的身份验证机制,同时提高系统的可扩展性和安全性。在实际应用中,需要根据具体的需求和场景,合理设计和实施 JWT 身份验证方案。
119 63
|
4月前
|
XML JSON 数据处理
C# 中的 XML 与 JSON 数据处理
在现代软件开发中,数据交换和存储需求日益增长,XML 和 JSON 成为最常用的数据格式。本文从 C# 角度出发,详细介绍如何处理这两种格式,并提供示例代码。对于 XML,我们介绍了读取、创建和写入 XML 文件的方法;对于 JSON,则展示了如何使用 Newtonsoft.Json 库进行数据解析和序列化。此外,文章还总结了常见问题及其解决方案,帮助开发者更好地应对实际项目中的挑战。
201 61
C# 中的 XML 与 JSON 数据处理
|
3月前
|
XML JSON 数据可视化
数据集学习笔记(二): 转换不同类型的数据集用于模型训练(XML、VOC、YOLO、COCO、JSON、PNG)
本文详细介绍了不同数据集格式之间的转换方法,包括YOLO、VOC、COCO、JSON、TXT和PNG等格式,以及如何可视化验证数据集。
410 1
数据集学习笔记(二): 转换不同类型的数据集用于模型训练(XML、VOC、YOLO、COCO、JSON、PNG)
|
2月前
|
JSON API 数据格式
如何使用Python和Flask构建一个简单的RESTful API。Flask是一个轻量级的Web框架
本文介绍了如何使用Python和Flask构建一个简单的RESTful API。Flask是一个轻量级的Web框架,适合小型项目和微服务。文章从环境准备、创建基本Flask应用、定义资源和路由、请求和响应处理、错误处理等方面进行了详细说明,并提供了示例代码。通过这些步骤,读者可以快速上手构建自己的RESTful API。
133 2
|
3月前
|
XML 关系型数据库 MySQL
Web Services 服务 是不是过时了?创建 Web Services 服务实例
本文讨论了WebServices(基于SOAP协议)与WebAPI(基于RESTful)在开发中的应用,回顾了WebServices的历史特点,比较了两者在技术栈、轻量化和适用场景的差异,并分享了使用VB.net开发WebServices的具体配置步骤和疑问。
57 0
|
3月前
|
存储 JSON 前端开发
JSON与现代Web开发:数据交互的最佳选择
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也便于机器解析和生成。它以文本格式存储数据,常用于Web应用中的数据传输,尤其是在客户端和服务器之间。
99 0
|
3月前
|
Java 应用服务中间件 Spring
【终极解决方案】Could not open ServletContext resource [/WEB-INF/dispatcher-servlet.xml]
【终极解决方案】Could not open ServletContext resource [/WEB-INF/dispatcher-servlet.xml]
45 0
|
5月前
|
Java Spring 容器
彻底改变你的编程人生!揭秘 Spring 框架依赖注入的神奇魔力,让你的代码瞬间焕然一新!
【8月更文挑战第31天】本文介绍 Spring 框架中的依赖注入(DI),一种降低代码耦合度的设计模式。通过 Spring 的 DI 容器,开发者可专注业务逻辑而非依赖管理。文中详细解释了 DI 的基本概念及其实现方式,如构造器注入、字段注入与 setter 方法注入,并提供示例说明如何在实际项目中应用这些技术。通过 Spring 的 @Configuration 和 @Bean 注解,可轻松定义与管理应用中的组件及其依赖关系,实现更简洁、易维护的代码结构。
71 0