一个好的RESTfulAPI,具备特征

一个好的RESTfulAPI,具备特征,第1张

一个好的RESTfulAPI,应该具备以下特征:

这个API应该是对浏览器友好的,能够很好地融入Web,而不是与Web格格不入。

1浏览器是最常见和最通用的REST客户端。好的RESTfulAPI应该能够使用浏览器HTML完成所有的测试(不需要使用编程语言)。这样的API还可以很方便地使用各种自动化的Web功能测试、性能测试工具来做测试。Web前端应用(基于浏览器的RIA应用、移动App等等)也可以很方便地将多个RESTfulAPI的功能组合起来,建造Mashup类的应用。

这个API中所包含的资源和对于资源的 *** 作,应该是直观和容易理解的,并且符合>

REST开发又被称作“面向资源的开发”,这说明对于资源的抽象,是设计RESTfulAPI的核心内容。RESTfulAPI建模的过程与面向对象建模类似,是以名词为核心的。这些名词就是资源,任何可命名的抽象概念都可以定义为一个资源。而>

按照>

2如果发现资源上的 *** 作过多,以至于>

这个API应该是松耦合的。

RESTfulAPI的设计包括了三个循序渐进、由低到高的层次:资源抽象、统一接口、超文本驱动。正是这三个层次确保了RESTfulAPI的松耦合性。

3当设计面向互联网的API时,松耦合变成了一种“必须有”的强需求。紧耦合的API非常脆弱,一旦公布出去,服务器端和客户端都无法持续进化。尤其是服务器端,公布出去的接口根本不敢改,改了之后,几乎所有客户端应用立即无法正常工作。REST这种架构风格就是紧耦合API的解毒剂,这个话题可以谈的很深,这里就不展开了。感兴趣的读者可以参考《REST实战》。

这个API中所使用的表述格式应该是常见的通用格式

在RESTfulAPI中,对于资源的 *** 作,是通过在服务器端-客户端之间传递资源的表述来间接完成的。资源的表述可以有很多种格式,并且在响应和请求中的资源表述格式也会有所不同。GET/POST响应中的资源表述格式,常见的有HTML、XML、JSON;POST/PUT请求中的资源表述格式,常见的有标准的HTML表单参数、XML、JSON。

4这些常见表述格式,处理起来非常容易,有大量的框架和库提供支持。所以除非有很合理的要求,通常不需要使用自定义的私有格式。

使用>

>

5如果一个所谓的“RESTfulAPI”对于任何请求都返回200OK响应,在响应的消息体中返回出错情况信息,这种做法显然不符合“确保 *** 作语义的可见性”这个REST架构风格的基本要求。

这个API应该对于>

6充分利用好>由于PaaS涉及复杂的系统底层研发,其技术是非常复杂的。以广州亦云的Pispower云计算PaaS平台为例,其运用到的主要技术有:
分布式计算技术:Pispower云平台提供分布式计算服务、分布式的定时任务(CronJob)服务、可定制数据抓取(FetchURL)服务、图像处理(Image)服务、视频处理服务。
分布式存储技术:Pispower云平台针对不同的应用场景,提供了不同的数据存储方案,包括分布式存储(Storage)服务、高速缓存(Memcached)服务等等。
高精确度的负载均衡:Pispower实现了云计算、云存储空间、云缓存、带宽等各种资源可d性调度,确保系统运行效率,同时又能限定应用占用的内存,消耗的CPU,产生的并发连接数,保证单个应用访问量的突增不会影响平台上的其他应用。
无单点设计:Pispower云平台采用分布式架构和无单点设计,保证服务的可靠性和自修复,确保即使单台机器出现故障,也不会影响线上服务。
在线代码调试:通过Pispower云平台,可以详细显示每次请求时页面执行的各个函数消耗的内存和CPU时间,并绘出直观的资源消耗图像,性能瓶颈一目了然。
应用体检:通过访问日志扫描,源代码静态和动态分析等技术对应用的性能和安全进行全面的检查,并对应用存在的问题提出相应的优化建议,从而保证应用在Pispower云平台上健康安全地运行。
数据迁移备份:Pispower运用了包括数据库导入、数据库导出等备份技术。

虽然API和SOA有类似的业务和技术目标,但许多API的支持者坚持认为API与SOA没有多大关系,而且它们属于非常不同的方法。它们经常宣称实用RESTAPI和SOA之间存在巨大差异。昌平电脑培训建议分工将SOA服务和RESTfulapi集成到一个统一的体系结构中。



团队必须在SOA和API思想之间建立一个桥梁,并构建一个实际的计划来集成API和SOA。

“doREST”和“创建api”的团队通常专注于克服技术和业务障碍,增加外部扩展、具体演示和核心业务用例,而不涉及复杂的技术。SOA团队通常专注于实现可伸缩性、实现业务标准、建立决策中心和满足复杂的非功能性需求。

通过结合api和SOA的思想,团队可以在遵循业务策略和扩展需求时快速交付业务解决方案。

务实的RESTAPI关注点

REST是系统开发的一种架构风格,它对一系列服务交互施加约束。正式的REST约束包括客户机-服务器和无状态交互、可缓存响应、不变契约、分层系统设计和按需编码。这些约束有利于特性的出现,即简单性、可扩展性、可变性、可靠性、可见性、性能和可移植性。满足REST约束的系统称为RESTful。RESTful设计可以增加很多好处:

使数据和服务更易于访问降低入门门槛尽最大可能扩展受众数量使API或服务被大量的用户代理消费使数据和服务逐步演进在运行期扩展系统对资源的修改不会影响到客户动态指导客户行为使系统可扩展、可靠和高性能简单可缓存原子性

虽然RESTful设计有利于支持SOA目标,但实用REST的战略重点不同于许多SOA项目。实用RESTAPI设计团队专注于自底向上的应用程序场景和友好的协议或格式(如>

务实的SOA最佳实践

实用的SOA团队不会强制公共(和复杂的)标准。一个实用的SOA团队提供了有价值的业务能力,减少了应用程序的阻力,并提供了独特的服务价值。

一个务实的SOA团队并没有鼓吹难以 *** 作的最佳实践。他们依靠intergroup和自动化治理来简化最佳实践的应用,这使得团队更容易做正确的事情。

务实的SOA团队关注技能差距和应用障碍。它们提供了加速包(如架构、工具、框架、api或服务构建块)来减少培训、增加自服务应用程序和加速项目交付。

一个实用的SOA团队将平衡企业治理与项目自治。成功的团队没有建立起发展和注册的门槛,引入了许多机制来完善服务,间接互动,服务水平,促进自助服务的应用,引入了促进服务团队发展、服务共享和服务应用的机制。您可以使用这些机制作为现有API管理的核心。

可分为四层,
首先:显示层,多数据中心云计算架构这层主要是用于以友好的方式展现用户所需的内容,并会利用到下面中间件层提供的多种服务,主要有五种技术:
HTML:标准的Web页面技术,2013年前主要以HTML4为主,但是将要推出的HTML5会在很多方面推动Web页面的发展,比如视频[1]和本地存储等方面。
JavaScript:一种用于Web页面的动态语言,通过JavaScript,能够极大地丰富Web页面的功能。
CSS:主要用于控制Web页面的外观,而且能使页面的内容与其表现形式之间进行优雅地分离。
Flash:业界最常用的RIA(Rich Internet Applications)技术,能够在现阶段提供HTML等技术所无法提供的基于Web的富应用,而且在用户体验[3]方面,非常不错。
Silverlight:来自业界巨擎微软[4]的RIA技术,虽然其2013年前的市场占有率稍逊于Flash,但由于其可以使用C#[5]来进行编程,所以对开发者非常友好。
其次:中间层 这层是承上启下的,它在下面的基础设施层所提供资源的基础上提供了多种服务,比如缓存服务和REST服务等,而且这些服务即可用于支撑显示层,也可以直接让用户调用,并主要有五种技术;
REST:通过REST技术,能够非常方便和优雅地将中间件层所支撑的部分服务提供给调用者。
多租户:就是能让一个单独的应用实例可以为多个组织服务,而且保持良好的隔离性和安全性,并且通过这种技术,能有效地降低应用的购置和维护成本。
并行处理:为了处理海量的数据,需要利用庞大的X86集群进行规模巨大的并行处理,Google的MapReduce是这方面的代表之作。
应用服务器:在原有的应用服务器的基础上为云计算做了一定程度的优化,比如用于Google App Engine的Jetty应用服务器。
分布式缓存:通过分布式缓存技术,不仅能有效地降低对后台服务器的压力,而且还能加快相应的反应速度,最著名的分布式缓存例子莫过于Memcached。

概念是 Roy Thomas Fielding在他2000年的博士论文中提出的。他参与制定了 >

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/zz/13491257.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-08-17
下一篇 2023-08-17

发表评论

登录后才能评论

评论列表(0条)

保存