`

REST学习笔记

阅读更多
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以及Mashup学习笔记 #### REST架构风格概述 REST(Representational State Transfer,表述性状态转移)是一种专门针对Web应用的开发风格,作为当今世界最成功的互联网超媒体分布式系统架构之一,它深刻地...

    Django restframework课件笔记详解

    本课件笔记将深入探讨DRF的核心概念、功能模块及其在实际项目中的应用。 一、DRF简介 DRF是一个用于构建Web API的高级框架,它为Django添加了额外的组件,如序列化、认证、权限控制和分页,让API开发变得更加简单。...

    SpringBoot经典学习笔记_springboot_SpringBoot经典学习笔记_

    SpringBoot经典学习笔记是针对Java开发者的宝贵资源,它涵盖了SpringBoot的核心概念、特性以及实践应用。SpringBoot是由Pivotal团队开发的框架,旨在简化Spring应用的初始搭建以及开发过程,通过“约定优于配置”的...

    SpringCloud学习笔记

    【SpringBoot核心特性】 SpringBoot是Spring框架的一个扩展,它旨在简化Spring应用程序的开发过程,...这份学习笔记涵盖了SpringBoot的基础特性和SpringCloud的负载均衡实践,对于深入理解这两个技术有极大的帮助。

    Redis学习笔记.pdf

    NoSQL数据库没有标准的SQL查询语言,但很多数据库提供了REST式的数据接口或查询API。 Redis作为一款高性能的键值存储数据库,支持多种数据类型,包括String、List、Set、ZSet和Hash,并且提供了数据持久化的机制,...

    SpringBoot经典学习笔记

    在"SpringBoot经典学习笔记"中,你可能会了解到以下关键知识点: 1. **起步依赖(Starter Dependencies)**:SpringBoot通过starter依赖来简化构建配置,比如`spring-boot-starter-web`用于Web应用,`spring-boot-...

    Web Service学习笔记

    在本学习笔记中,我们将深入探讨Web服务的核心概念、技术栈以及实际案例。 一、Web服务的核心概念 1. **SOAP (Simple Object Access Protocol)**:SOAP是一种基于XML的协议,用于交换结构化信息,是Web服务的基础...

    《机器学习》学习笔记——3.3

    本笔记主要围绕《机器学习》课程中的3.3章节,探讨对率回归的基本原理、实现方法以及在Python中的应用。 对率回归的核心在于它的激活函数——对数几率函数(Logit Function),也称为Sigmoid函数。Sigmoid函数将...

    SpringCloudGateway初学者学习笔记

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

    Flex学习笔记-基本语法

    在本文中,我们将深入探讨Flex学习过程中的基础语法,特别是从AS2到AS3的变化。 首先,ActionScript 3(AS3)是AS的一个重大升级,它引入了完全的面向对象编程(OOP)概念。这意味着AS3具有类、继承、封装和多态性...

    Parch 学习笔记系列(十七本)

    这个压缩包包含十七本详细的学习笔记,旨在帮助初学者和有一定经验的开发者深入理解这些关键的技术。 1. **CXF学习笔记**:CXF是一个开源的Java框架,用于构建和开发服务导向架构(SOA)和RESTful应用程序。笔记会...

    ES6 学习笔记.pdf

    ### ES6 学习笔记知识点详解 #### 一、ECMAScript 概述 - **ECMA**(European Computer Manufacturers Association):欧洲计算机制造商协会,后更名为 Ecma International,主要致力于评估、开发和认可电信及...

    JAVA WEB学习笔记

    【JAVA WEB学习笔记】 Java Web是Java技术在Web开发领域中的应用,涵盖了从服务器端编程到客户端交互的各种技术。这份学习笔记将带你深入理解Java Web的核心概念和实践技巧。 1. **Servlet与JSP** - Servlet是...

    springcloudtext_cloud学习笔记_

    "springcloudtext_cloud学习笔记_"这个标题暗示了这是一份关于SpringCloud的学习资料,可能包含了作者在学习过程中整理的各种概念、实战案例和问题解决方案。 描述中的“第二部分内容,接着上一次的上传,包含了一...

    Xitrum学习笔记

    9. **RESTful APIs**(Xitrum学习笔记04 - RESTful APIs.pdf):RESTful API设计是现代Web服务的标准,Xitrum提供了一套优雅的方式来创建符合REST原则的接口。这部分将讲解如何使用Xitrum构建资源导向、状态转换的...

    Hadoop之HBase学习笔记

    【标题】"Hadoop之HBase学习笔记"主要聚焦于Hadoop生态中的分布式数据库HBase。HBase是一个基于Google Bigtable理念设计的开源NoSQL数据库,它运行在Hadoop之上,提供高性能、高可靠性以及可水平扩展的数据存储能力...

    Eureka服务注册中心学习笔记

    3. **Eureka的REST API**:了解如何通过HTTP请求与Eureka Server交互,进行服务注册、查询和注销等操作。 4. **服务实例的健康检查和熔断机制**:如何结合Hystrix实现服务降级、熔断和恢复功能,提高系统的容错性和...

    Django学习笔记.zip

    这个名为"Django学习笔记.zip"的压缩包文件显然包含了关于Django框架深入学习的各种资料,涵盖了从基础到进阶的主题。让我们逐一探讨这些主题。 1. **Django安装**:Django的安装通常通过Python的包管理器pip完成。...

    javascript学习笔记整理知识点整理

    这份“javascript学习笔记整理知识点整理”是针对初学者的一份宝贵资料,涵盖了JavaScript的基础知识,旨在帮助新手快速入门并掌握这门语言的核心概念。 一、变量与数据类型 在JavaScript中,变量用于存储数据。...

Global site tag (gtag.js) - Google Analytics