文档章节

RESTful Web Service的一些新体会

Mybbz
 Mybbz
发布于 2014/08/21 23:39
字数 804
阅读 184
收藏 15

REST - Representational State Transfer

其实这个representational是指Resource的representation

    Resource其实就是实体,ReST中所有的对象都被视为Resource。每一个Resource都有一个URI(Unique Resource Identifier),通过访问URI就可以获取对应的resource

    Representational指的是resource的呈现形式,可以是txt, json, html, xml, binary, jpg, png..... 

    State Transfer发生在client和server互动的过程中。因为HTTP是stateless,因此所有的state都保存在server,如果client想要操作server,就需要让server发生state transfer。这种transfer发生在表现层(representation),因此叫做REST。为了是想state transfer,client需要通过HTTP methods:POST, GET, PUT, DELETE 来分别进行CRUD(Create, Read, Update, Delete)操作。其中POST既可以用来新建资源,也可以用来更新资源


在面试中还被问到what makes Restful web service 其实感觉就是想问restful的一些条件和原则

        1. Resource都对应着唯一的URI,或者说是resource-driven。URI构成了一个全局命名空间

        2. 使用HTTP methods

        3. Stateless无状态,对服务器的请求时无状态的,这使得服务器的变换对客户端是不可见的,因为在连续的请求中,客户端并不依赖于同一台服务器

        4. 多种resource format,可以是txt, json, html, xml等等。


因为URI指示的是资源resource 因此在URI中不应该出现HTTP动词,只能有代表resource的名词

HTTP methods:

    GET (Select)- 从服务器获取资源

    POST (Create/Update) - 在服务器上新建一个资源 或更新一个资源

    PUT (Update) - 在服务器更新client提供改变后的完整资源

    DELETE (Delete) - 在服务器上删除资源

    PATCH (Update) - 在服务器上更新client提供改变的属性

    HEAD - 获取资源的head

    OPTIONS - 获取信息,关于资源的哪些属性是client可以更改的


Status Codes

    常见的有这些:

    200 OK - [GET] 服务器成功返回用户请求的数据

    201 CREATED - [POST/PUT/PATCH]用户创建或修改数据成功

    204 NO CONTENT - [DELETE]用户删除数据成功

    400 INVALID REQUEST - [POST/PUT/PATCH] 用户发出的请求有错误 服务器没有进行新建或修改的操作

    404 NOT FOUND - [*]用户发出的请求是不存在的记录

    500 INTERNAL SERVER ERROR - [*]服务器发生错误 用户无法判断发出的请求是否成功

    在发生错误之后,服务器会向用户返回错误信息

    所有的code:http://en.wikipedia.org/wiki/List_of_HTTP_status_codes


其实因为REST用的是HTTP methods 也是基于HTTP protocol的 所以也可以用HTTP Servlet去实现REST 因为HTTPServlet中也定义了doGet, doPost, doPut, doDelete这些方法了 所以也完全可以重写这些方法去实现REST


在复习的过程中 我还参考了http://www.ruanyifeng.com/blog/2014/05/restful_api.html的博文 感觉写的蛮好~


© 著作权归作者所有

Mybbz
粉丝 0
博文 7
码字总数 5719
作品 0
美国
私信 提问
Jersey : Java规范下REST风格Web Service开发框架

Sun正在致力于建立RESt风格Web服务的规范, 规范如下 JSRs: Java Specification Requests JSR 311: JAX-RS: The JavaTM API for RESTful Web Services 链接:http://jcp.org/en/jsr/detail?......

hans汉斯
2010/01/13
1K
0
10 个技巧让你的 RESTful Web 服务更加实用

提示:随着RESTful Web services的流行程度不断地上升,开发人员需要知道如何避免开发中的陷阱以及让开发出来的Web service达到自己能做到的最好程度。 过去的几年里,我们看到RESTful Web s...

坦诚相待
2012/04/09
6.1K
3
为什么设计beego和设计的思路

很多人会问为什么有那么多框架了,还要去实现一个框架呢?是不是大家都有自己实现框架的情节,我可以肯定的说不是,我说一下为什么设计beego的初衷 还记得当初写书的时候,我纯粹只是想把自己...

astaxie
2013/04/20
5.4K
10
DropWizard:用Java轻轻的写一个RESTful Service

1.关于Dropwizard的一些闲扯 在我的上一篇博客《 Embedded Server:像写main函数一样写Web Server》中,提到了使用Jetty Embedded Server进行Java Web Server的开发比传统的Web Container的方...

douxn
2016/04/27
255
0
RESTful SPA 杂谈

RESTful SPA 杂谈 在从前的从前,Javascript还不是流行的时代,HTML语言可以说是浏览器的基础了,那时候,一个页面的HTML渲染,完全依赖于后端服务器,如JSP ,PHP等页面渲染技术。 后来Jav...

精通吹水
2016/01/16
247
0

没有更多内容

加载失败,请刷新页面

加载更多

谁说多功能和低价格不能兼得?Aspose系列产品1024购买指南请查收!

你还在为了Word、Excel、PDF、CAD等文档格式转换而发愁吗? 你是否在寻找一款能够在应用程序中文档管理的工具呢? Aspose——支持100多种文件格式创建、编辑、转换和打印! 往下看,找一找哪...

mnrssj
23分钟前
3
0
hbase客户端API

本章介绍用于对HBase表上执行CRUD操作的HBase Java客户端API。 HBase是用Java编写的,并具有Java原生API。因此,它提供了编程访问数据操纵语言(DML)。 HBaseConfiguration类 添加 HBase 的配...

水木星辰
23分钟前
3
0
[插件化开发] 1. 初识OSGI

初识 OSGI 背景 当前product是以solution的方式进行售卖,但是随着公司业务规模的快速夸张,随之而来的是新客户的产品开发,老客户的产品维护,升级以及修改bug,团队的效能明显下降,为了解...

IsaacZhang
23分钟前
4
0
Webstorm 环境使用 nuxt.js 做开发,@ 和 ~ 别名配置

好的IDE + 好的代码提示 = 高效率的开发 webstorm 设置@和~别名,有助于代码查看和跳转. step 0 在项目下创建一个webpack.config.js,内容如下: const path = require('path')module.exp...

皇虫
28分钟前
3
0
Knative 实战:基于 Knative Serverless 技术实现天气服务-下篇

上一期我们介绍了如何基于 Knative Serverless 技术实现天气服务-上篇,首先我们先来回顾一下上篇介绍的内容: 通过高德天气 API 接口,每隔 3 个小时定时发送定时事件,将国内城市未来 3 天...

Mr_zebra
45分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部