URI和URL

URI(Uniform Resource Identifier ) 是一个紧凑的字符串用来标示抽象或物理资源。可以分为URL,URN或同时具备locators 和names特性的一个东西。

URN作用就好像一个人的名字,

URL就像一个人的地址(定位该资源的主要访问机制(如其网络“位置”))。

换句话说:URN确定了东西的身份,URL提供了找到它的方式。

URI:Uniform Resource Identifier,统一资源标识符

URL:Uniform Resource Location统一资源定位符

REST

什么是REST?

REST即Representational State Transfer 即表现层状态转换。HTTP1.0面向的是Web的静态文本,随着Ajax等出现,需要制定新的协议规范动态富文本的传输和使用。

REST的五个关键词:

资源(resource):是互联网中信息数据的一种抽象性描述,REST架构即面向资源的架构,资源是整个网络处理的核心。

资源表述(representation): 即资源的表现形式,常用的有HTTP文本,Json,XML等。

状态转移(state transfer):资源的转化或则传输(“状态”指的是资源在某一时刻的表现形式,“转移”是指按照一定的逻辑转化资源表现形式或者传输资源)。

统一接口(Uniform inference):因为是分布式架构,为了方便不同服务器用户使用和规范,REST要求使用统一的接口规范。

超文本驱动:REST架构的提出很大程度上是用来指导HTTP1.1协议的制定,支持超链接和URI形式的驱动方式,URI可以理解成资源的唯一标志,是资源的地址。

REST的五个架构约束

客户-服务器:REST是一种响应式架构,一般只允许客户端主动向服务器端发起响应请求,服务器端做出对应的响应操作。

无状态:状态是指服务请求的状态,是用户交互时的会话信息。有状态的Web服务会将用户的相关信息保存在与该用户交互的服务的session中,Client的用户请求只能被该server接受和理解,不利于负载均衡。无状态的Web服务中,Clinet的用户请求必须携带服务要参考的全部信息,每一个请求都是独立的,可以被任何可用的服务接受,便于进行扩展。

缓存:指的是客户端可以缓存一些需要的数据,以便于同样的请求操作复用。

统一接口: 参考上述“五个关键词”。

分层系统:REST将结构分层的思想使得各层服务器相对独立,各层服务器只需面向直接相邻的服务器或用户,提高了系统的可伸缩性。

REST的六个特征

面向资源、可寻址、连通性、无状态、统一接口、超文本驱动。

可寻址:URI是资源的唯一标识(地址),系统可根据URI定位或重定位到资源。

连通性:资源在设计时要考虑资源之间的联系,避免存在孤立的资源。

RestFul

RestFul 一种url连接新写法,遵守http协议,和之前连接写法没有本质上的不同,url参数拼接方式改变,

参数拼接 login?username=zhangsan 改为了 login/zhangsan 更加安全

RestFul的响应信息是json,细分了多种请求方式的使用

get 查询post 添加 表单提交delete 删除patch 修改put 添加

Rest相关注解

  1. @RestController= @Controller+@ResponseBody

    相当于@Controller+@ResponseBody两个注解的结合,返回json数据不需要在方法前面加@ResponseBody注解了,

    但使用@RestController这个注解,就不能返回jsp,html页面,视图解析器无法解析jsp,html页面

  1. 查询 get方式请求

​   可以在Controller中设置必须使用get请求

​    @RequestMapping(path = "getAllGuru",method = RequestMethod.GET)

​    method = RequestMethod.GET 规定请求类型为Get

  1. @GetMapping 等价于 @RequestMapping(path = "getAllGuru",method = RequestMethod.GET) 要求请求方式必须是get

   @PostMapping

    @DeleteMapping

    @PatchMapping

  1. @PathVariable("name") 获得地址中的参数 用于Rest风格 配合占位符的url地址写法使用 "testGet/{name}"

​   @RequestParam request.getAttribute()

  ​ @GetMapping("testGet/{name}")

  public String testGet(@PathVariable("name") String name){}

URI和URL、REST的更多相关文章

  1. 【Web】URI和URL,及URL的编码

    URI和URL是什么,以及他们的区别 URL,Uniform Resource Locator,统一资源定位符.用于表示网络上服务器的资源所在位置,比如我们输入浏览器的地址. URI,Uniform ...

  2. Java魔法堂:URI、URL(含URL Protocol Handler)和URN

    一.前言 过去一直搞不清什么是URI什么是URL,现在是时候好好弄清楚它们了!本文作为学习笔记,以便日后查询,若有纰漏请大家指正! 二.从URI说起    1. 概念 URI(Uniform Reso ...

  3. URI、URL、URN介绍

    注:1. 仅从http(Hypertext Transfer Portocol)角度阐述,不涉及语言层面的类库. 2. 以下内容均参考<Http权威指南>一书. 一.万维网构成       ...

  4. URI与URL区别

    URL 与 URI 很多人会混淆这两个名词. URL:(Uniform/Universal Resource Locator 的缩写,统一资源定位符). URI:(Uniform Resource I ...

  5. URI、URL和URN

    URI.URL和URN URI :Uniform Resource Identifier,通用资源标识符: URL:Uniform Resource Locator,统一资源定位符: URN:Unif ...

  6. URI与URL的区别

    (原网址:http://zhidao.baidu.com/question/38764759.html) Web上可用的每种资源 - HTML文档.图像.视频片段.程序等 - 由一个通过通用资源标志符 ...

  7. HTTP笔记:URI与URL

    URI与URL 简单理解是这样的:理解URI和URL的区别,我们引入URN这个概念.URI = Universal Resource Identifier 统一资源标志符URL = Universal ...

  8. URI、URL、URN

    URI.URL.URN URI(Uniform Resource Identifie):统一资源标识符 URL(Uniform Resource Locator):统一资源定位符 URN(Unifor ...

  9. URI和URL

    URI(uniform resource identifier),统一资源标识符,用来唯一的标识一个资源. URL(uniform resource locator),统一资源定位器,它是一种具体的U ...

  10. java URI 与URL问题

    File类存在两个看起来很相似的方法toURI()和toURL(),这两个方法都是将文件转换成一个链接,可以网络访问.只是URI和URL的应用范围不同,URI来的更广. 那么为什么要使用toURI() ...

随机推荐

  1. Andrew Ng机器学习课程10

    Andrew Ng机器学习课程10 a example 如果hypothesis set中的hypothesis是由d个real number决定的,那么用64位的计算机数据表示的话,那么模型的个数一 ...

  2. 第5课.linux进阶命令

    1.find:查找符合条件的文件 格式: find 目录名 选项 查找条件 eg: find /work/001_linux_basic/dira/ -name "test1.txt&quo ...

  3. eNSP模拟器OSPF单区域配置

    实验拓扑图如下 下一步对终端设备与路由器的端口进行基本的ip设置 配置完成后要注意检查是否有小错误,不然会对后面的测试带来麻烦.在进行基础配置的时候一定要细心细心细心. 下一步我们就要进行OSPF的配 ...

  4. How George Washington Angered Lawmakers Over Thanksgiving——VOA慢速英语

    听力地址:How George Washington Angered Lawmakers Over Thanksgiving 中英对照:华盛顿总统将感恩节定为全国性节日 Words in This S ...

  5. 烽火传递【单调队列优化dp】

    题目大意: 1.给出长度为n的数组,要求每m个连续的元素之间必须选一个值作为代价,求该数组的最小代价. 题解思路: 1.显然是线性dp,dp[i]表示选择第 i 个元素时的最小总代价.很明显状态转移方 ...

  6. D1. Docker: win7 环境下安装 Docker

    [下载与安装] win7.win8 等需要利用 docker toolbox 来安装,国内可以使用阿里云的镜像来下载,下载地址:http://mirrors.aliyun.com/docker-too ...

  7. ubuntu下安装amqp扩展

    目录 环境 下载扩展: 安装amqp: 验证 环境 系统 ubuntu 16.04 php 7.1 下载扩展: sudo apt-get -y install gcc make autoconf li ...

  8. Spring Boot 入门(九):集成Quartz定时任务

    本片文章续<Spring Boot 入门(八):集成RabbitMQ消息队列>,关于Quartz定时任务请参考<Quartz的基本使用之入门(2.3.0版本)> spring ...

  9. Java基础笔试练习(二)

    1. HashMap的数据结构是怎样的? A.数组 B.链表 C.数组+链表 D.二叉树 答案: C 解析: JDK8以后,HashMap的数据结构是数组+链表+红黑树 2. 在 JAVA 编程中,J ...

  10. SpringBoot中使用@Scheduled创建定时任务

    SpringBoot中使用@Scheduled创建定时任务 定时任务一般会在很多项目中都会用到,我们往往会间隔性的的去完成某些特定任务来减少服务器和数据库的压力.比较常见的就是金融服务系统推送回调,一 ...