`
阅读更多
RESTful Web Services学习笔记,在此记录以备以后参考

在应用里每个有价值的事物都应该被暴露为一个资源。
一般ROA设计步骤:
1.规划数据集
2.把数据集划分为资源
  对于其中每种资源:
3.用URI为该资源命名
4.暴露一个统一接口的子集
5.设计来自客户端的表示
6.设计发给客户端的表示
7.用超链接和表单把该资源与已有资源联系起来
8.考虑有哪些典型的事件经过
9.考虑可能出现哪些错误情况

可寻址性
如果一个WEB服务将其数据集里有价值部分作为资源发布出来,那么该应用就是可寻址的。一个URI应当只表示一个资源。一个资源的不同表示可以使用不同的URI,例如:/release/104.html和/release/104_en.html

状态与无状态性
rest服务里状态分为两种:资源状态(即关于资源的信息)和应用状态(即关于客户端在应用中所处状态的信息)。资源状态保存在服务端,而且只能以表示的形式发给客户端。应用状态保存在客户端;当它能够创建、修改或删除一个资源时,它将作为POST、PUT或DELETE请求的一部分发送给服务器,成为资源状态。例如使用搜索引擎时提交一个关键字得到查询结果,然后我们又进行翻页,这里关键字和页码都是属于应用状态。

统一接口
GET:获取一个资源的表示
PUT:创建一个新资源,修改已有资源。
DELETE:删除已有资源
POST:创建从属于某个父资源的资源,也可以用它来为资源的当前状态添加数据。(这里的添加数据和PUT的用法修改已有资源有区别,例如:通过POST向服务器提交新的log)
HEAD:获取的一个子包含元数据的方法
OPTIONS:查看一个资源支持哪些http方法。OPTIONS请求的响应里含有HTTP Allow报头(header)。Allow报头的例子:Allow:GET,HEAD 这个报头表明:该资源支持GET和HEAD请求。

PUT和POST动作
向新资源发put请求向已有资源发put请求POST
weblogsN/A(资源已存在)无效果创建一个新博客
weblogs/myweblog创建该博客修改该博客的设置往博客里添加一篇文章
weblogs/myweblog/entries/1N/A(你无法知道这个URI)编辑该博客文章为该博客文章添加评论

PUT与POST的区别就在于:假如是客户端负责决定新资源采用什么URI,那就用PUT;假如是服务器负责新资源采用什么URI,那就用POST。PUT的实现要求具有等幂性而POST的实现可以没有等幂性

URI设计
URI设计有三条基本原则:
1.用路径变量(path variables)来表达层次结构:weblogs/myweblog/entries/1。
2.用逗号或分号表达非层次结构:/parent/child1;child2   /earth/43.2,45.6。当作用域信息的次序有关紧要时,就用逗号,否则就用分号。
3.用查询变量(query variables)来表达算法的输入,例如:/search?q=jellyfish&start=20。


分享到:
评论

相关推荐

    Rest以及Mashup学习笔记

    REST架构风格是全新的针对Web应用的开发风格,是当今世界最成功的互联网超媒体分布式系统架构,它使得人们真正理解了Http协议本来面貌...随着 REST架构成为主流技术,一种全新的互联网网络应用开发的思维方式开始流行。

    SpringCloudGateway初学者学习笔记

    此笔记由本人跟随尚学堂教师一步一讲解梳理出来的 网关的角色是作为一个 API 架构,用来保护、增强和控制对于 API 服务的访问。 API 网关是一个处于应用程序或服务(提供 REST API 接口服务)之前的系统,用来管理...

    cxf学习笔记

    使用cxf时的学习笔记。包括soap和rest两种协议。自己的笔记,别人不一定能够看懂。

    一个REST获取天气预报的客户端小例子(分别用C#和jQuery实现)

    描述信息: http://blog.csdn.net/genfeng/article/details/31098021 RESTful学习笔记

    2009 达内Unix学习笔记

    集合了 所有的 Unix命令大全 ...telnet 192.168.0.23 自己帐号 sd08077-you0 ftp工具 192.168.0.202 tools-toolss ... 各个 shell 可互相切换 ksh:$ sh:$ csh:guangzhou% bash:bash-3.00$ ... 命令和参数之间必需用空格隔...

    springMVC学习笔记

    Spring MVC 是目前最主流的 MVC 框架之一 Spring MVC 通过一套 MVC 注解,让 POJO 成为处理请 求的控制器,而无须实现...支持 REST 风格的 URL 请求 采用了松散耦合可插拔组件结构,比其他 MVC 框架更具 扩展性和灵活性

    Jupyter-REST-API:了解本系列中的REST API来运行和执行Jupyter Notebooks

    在本系列中,学习如何以REST API的形式运行和执行Jupyter Notebook。 我们如何将Jupyter Notebook作为Rest API运行? 这是我想解决的问题,目的是学习Jupyter笔记本对于各种背景的程序员的功能如何。 原因:自动化。...

    Kubernetes架构学习笔记

    Master节点负责整个集群的控制和管理,所有的控制命令都是发给它,上面运行着一组关键进程:kube-apiserver:提供了HTTPREST接口,是k8s所有资源增删改查等操作的唯一入口,也是集群控制的入口。 kube-contr

    docs:Java 学习笔记

    Headline 学习文档记录. TODO :party_popper: Java Java 面试题 Java 基础:balloon: Java 进阶:balloon: Java Web:balloon: Mysql Mysql ...REST ...Git 学习笔记 PostWoman 第三方插件 IDE 设置与插件

    elastic-thought, 用于Caffe深度学习框架的可以扩展 REST API.zip

    elastic-thought, 用于Caffe深度学习框架的可以扩展 REST API Caffe 深入学习框架的可以扩展 REST API 包装。问题Caffe是一个非常深的学习框架,但是在一台笔记本电脑或者台式计算机上运行它并不像在云中运行它那样...

    SpringbootBySelf:springboot尚硅谷学习笔记以及文档代码

    springboot学习笔记以及文档代码 Springboot2.0里面 文件夹对应内容 jdk9 ---->对应着JDK9的新特性 也就是背压的简单使用 Reactive Stream的简单使用 lambda AND stream ---->对应着JDK8 的新特性以及Stream...

    springboot学习思维笔记.xmind

    springboot学习笔记 spring基础 Spring概述 Spring的简史 xml配置 注解配置 java配置 Spring概述 Spring的模块 核心容器CoreContainer Spring-Core Spring-Beans ...

    CephMgr-RestApi-SourceCode-Book-ce source code

    ceph-mgr rest api学习笔记

    java-notes:我的Java学习笔记,存放此处便于移动端复习

    Java学习笔记清单【JVM】JVM相关知识已整理至开源项目:【JavaSE】【Java设计模式】Java设计模式相关内容已整理至开源项目:【Spring】Spring-注解开发Spring-IoC容器-源码解析【SpringBoot】SpringBoot-自动配置-源码...

    study-notes:学习笔记

    对象与数组的解构、rest 操作符 函数进阶(箭头函数、默认参数) 对象和数组的扩展用法 Proxy、Reflect、Map、Set、Symbol for...of、迭代器模式、生成器函数 ES Modules 模块系统 ES2016 - ES2020(ES7 - ES...

    microservicecloud.rar

    这是一套关于springcloud全家桶微服务框架,该框架融合了服务的注册和发现,feign客户端的调用,服务的熔断和降级,zuul网关路由分发等等,还整合了swagger2的开发接口文档,服务的注册中心采用集群达到高可用目的

    mJupyter-Notebook:基于Jupyter Notebook实现的最小REST api体系结构。 警告

    mJupyter-笔记本基于Jupyter Notebook实现的最小REST api体系结构。 注意:这仅出于学习目的。怎么跑python app.py要求烧瓶- pip install flask

    软件测试理论总结,Selenium学习

    软件测试基础翻译——原网站地址:Software Testing Fundamentals ... Unittest 单元测试框架 Robot Framework 关键字测试框架 ...UI自动化测试 Selenium + Python 学习笔记 Client 端测试记录 其它测试心得总结

    尚硅谷SSM整合

    本视频基于Maven+SpringMVC+Spring+MyBatis+Bootstrap的组合,快速开发一个完整的CRUD功能,视频除过对框架组合的基本使用外,还涉及到许多的开发细节:Bootstrap搭建页面,MyBatis逆向工程使用,Rest风格的URI,@...

Global site tag (gtag.js) - Google Analytics