码迷,mamicode.com
首页 > 其他好文 > 详细

RESTful思考

时间:2015-07-01 16:03:25      阅读:147      评论:0      收藏:0      [点我收藏+]

标签:rest   restful   rpc   soap   

1.REST和RPC

REST是一种ROA(Resource Orientation Arichtecture 资源相关框架)。REST接口和RPC(SOAP+WSDL服务所采用的)都是为程序开发人员提供的接口(programming web)。
人们往往使用复杂的分布式网络架构(称之为“Big Web Service” WS-*协议栈)来构建网络。ROA(Resource oriented Architecture)作为代替RPC(SOAP+WSDL服务所采用的)架构的简单方案
统一了两种网络:一种是为人类所理解的web(human web)一种是程序高手所使用的web(programming web)将这两种统一为在一组服务器上运行,采用一组协议并遵守一定设计原则的万网网络。
web服务框架解决两个问题:
(1)客户端想对服务器做什么操作,即http方法字段
(2)客户端告诉服务器对哪些数据进行操作,即作用域信息(可以放在URI中或者实体主体中)
常见的服务器框架有三种:
(1)REST:方法信息都在HTTP协议的方法字段中,作用域(scope information)都在URI中
(2)RPC:方法和作用域都封装在信封(envelope)字段或者报头字段,常常把SOAP信封放在HTTP信封中传递,各个RPC服务采用自己的服务。URI不变,总是使用HTTP POST方法
(2)REST和RPC混合式:把一个REST服务过多的采用POST方法
区别:
REST:||方法信息放在HTTP-method字段中,作作用域字段放在URI中||不同的作用域暴露不同的URI||
RPC: ||方法字段和作用域字段都放在XML文件中||不同的作用域暴露相同的URI||
怎么解释RPC:
有一种简单的RPC成为XML-RPC,客户端将带有methodCall和params标签的XML文档放在HTTP实体主体中

RESTful设计原则

  1. 尽量使用https协议
  2. 尽量将api部署到专用于域名下;https://www.api.example.com;如果API简单不会有进一步的扩展可以放在主域名下;https://www.example.com/api/
  3. 将API版本号放在 URL中;https://www.api.example.com/v1/(也可以放在http头文件中)
  4. 在RESTful架构中,每个网址代表一种资源(resource),所以网址中不能有动词,只能有名词,而且所用的名词往往与数据库的表格名对应。一般来说,数据库中的表都是同种记录的”集合”(collection),所以API中的名词也应该使用复数。
    举例来说,有一个API提供动物园(zoo)的信息,还包括各种动物和雇员的信息,则它的路径应该设计成下面这样。
    https://api.example.com/v1/zoos
    https://api.example.com/v1/animals
    https://api.example.com/v1/employee
  5. 使用参数过滤资源
  6. 服务器向客户单响应状态码和提示信息
  7. 如果状态码是4xx,就应该向用户返回出错信息。一般来说,返回的信息中将error作为键名,出错信息作为键值即可。

{
error: “Invalid API key”
}
8. RESTful API最好做到Hypermedia,即返回结果中提供链接,连向其他API方法,使得用户不查文档,也知道下一步应该做什么。
比如,当用户向api.example.com的根目录发出请求,会得到这样一个文档。

{“link”: {
“rel”: “collection https://www.example.com/zoos“,
“href”: “https://api.example.com/zoos“,
“title”: “List of zoos”,
“type”: “application/vnd.yourformat+json”
}}
详细见:阮一峰的网络日志 :http://www.ruanyifeng.com/blog/2014/05/restful_api.html

版权声明:本文为博主原创文章,未经博主允许不得转载。

RESTful思考

标签:rest   restful   rpc   soap   

原文地址:http://blog.csdn.net/samdy1990/article/details/46710529

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!