RESTFUL王少伟2014-07-18冲击•互联网(思维)•云计算•SDN•大数据•SAAS•PAAS•移动应用•LBS•智能家居•穿戴设备•智能电视•智能摄像头传统•平台化产品:提升开发效率,适应企业变化•模块化开发:有模块就能很快搭建一个系统•功能复用:现成的功能可以直接用了,引入JAR简单•定制化应用:基于现有产品进行扩展开发•集中化:数据大集中,一个数据库所有都包含了。传统碰上了变化•平台化产品:浏览器都用的少了,全改移动了,平台化的优势在哪里?•模块化开发:耦合太紧,没法进行平滑升级?•功能复用:功能没啥用了,升级还得全部重来。•定制化应用:移动没法定制化,接口还得重新来开发。•集中化:旧数据不敢升级,新结构代价更大改变适应于趋势•网络就是软件•服务网络即软件硬盘和网络,哪个传输速度快?一个8核CPU和8个1核CPU,哪个计算快?网络连接了计算机,内存代替了硬盘?一台计算机提供的N个服务,和N台计算机提供一个服务,差别在哪里?提供功能的URI和提供功能的软件?数据即服务HTML是给人看的XML程序猿能看懂,但却是给计算机用的HTML,XML,JSON,Excel,TXT都是数据展现形式人看到的数据是服务计算机读到的数据是服务移动端用到的数据也是服务1RESTful2Java3RESTfulRBAC如何构建基于网络计算的IT系统系统架构-传统/WEB 系统架构-改进/系统架构-优化..TV…Session怎么办?效率优化怎么办?缓存怎么处理?权限如何处理?问题越来越多了。。。都知道基于服务的软件架构,可用起来还是费劲啊?•RoyThomasFielding博士•牛人永远都是牛人•HTTP协议(1.0版和1.1版)的主要设计者•Apache服务器软件的作者之一•Apache基金会的第一任主席•RESTful概念的提出人RESTful的基本概念•RESTRepresentationalStateTransfer–Fielding将他对互联网软件的架构原则,定名为REST,即RepresentationalStateTransfer的缩写–如果一个架构符合REST原则,就称它为RESTful架构 •资源(Resources):每一个URI代表一种资源。 •表现层(Representation):客户端和服务器之间,传递这种资源的某种表现层•状态转化(StateTransfer):客户端通过四个HTTP动词,对服务器端资源进行操作,实现表现层状态转化。RESTful-资源(Resources)• • •URI •URI •URIRESTful-表现层(Representation)• •txtHTMLXMLJSON •URI •.html •HTTPAcceptContent-TypeRESTful-状态转化(StateTransfer)•URI •HTTP •State Transfer •HTTPGETPOSTPUTDELETEGETPOSTPUTDELETERESTfulAPI设计• • •Versioning •Endpoint •HTTP •Filtering •Status Codes •Error handling • •Hypermedia API •RESTfulAPI设计-协议•APIHTTPsRESTfulAPI设计-域名•API • •API •设计-版本(Versioning)•APIURL • •HTTPURLRESTfulAPI设计-路径(Endpoint)•RESTfulURIresource • • •设计-HTTP动词•GETSELECT •POSTCREATE •PUTUPDATE •PATCHUPDATE •DELETEDELETE •HEAD •OPTIONS•GET /users •POST /user •GET /user/{ID} •PUT /user/{ID} •PATCH /user/{ID} •DELETE /user/{ID} RESTfulAPI设计-过滤信息(Filtering)•?limit=10 •?offset=10 •?sortby=name&order=asc •?user_type_id=1•API •APIURL user/id/cars ==cars?userid=1RESTfulAPI设计-状态码•200 OK - [GET]Idempotent •201 CREATED - [POST/PUT/PATCH] •204 NO CONTENT - [DELETE] •400 INVALID REQUEST - [POST/PUT/PATCH] •404 NOT FOUND - [*] •500 INTERNAL SERVER ERROR - [*]RESTfulAPI设计-错误处理(Errorhandling)•4xxerror{ error: Invalid API key }RESTfulAPI设计-返回结果•GET /users GET /user/id POST /user PUT /user PATCH /user DELETE /user/idRESTfulAPI设计-HypermediaAPI•RESTful APIHypermediaAPIapi.github.com { current_user_url: authorizations_url: // ... } { message: Requires authentication, documentation_url: }RESTfulAPI设计-安全•HTTP HEAD • • •OAuth, OAuth2RESTful的优势• • • •JAVA实现RESTful的成熟框架•HTML5 CSS3 JQuery WEB Android iOS TV •JSTLJAVAHTML •SiteMesh •Shiro •Spring MVCMVCJava WEB •JPA •Hibernate JDBCRESTful基于JAVA的框架图RESTful下的RBAC权限模型•RABC •RESTful •Java提问?不见得回答对