REST网络请求

一 什么是REST

REST(Representational State Transfer)是一种含状态传输的软件架构风格.我们并不陌生.平时经常使用的GET和POST就是REST.
常见的REST有


常见REST请求
  • 安全 - 指的是对原有资源没有任何影响.
  • 等幂 - 不管操作多少次,对资源的影响相同.

简单说,REST对资源的操作都可以通过URI来完成.

二 基于HTTP的REST简介

基于HTTP的REST包括三个部分

1 资源的URI
2 资源的传输格式
3 对资源的操作(GET POST PUT DELETE Options Head)

HTTP的交互的过程是客户端发出一个请求,然后服务器返回一个请求。


一个REST的HTTP请求

其中

  • VERB是HTTP方法,入GET POST
  • URI是资源的位置
  • HTTP Version 是HTTP版本
  • Request Header,请求头,包含了metaData(例如接受的数据格式,授权,证书等信息)
  • Request Body,实际传递的消息

例如一个GET方法,在浏览器中输入URL然后回车,就是GET方法

GET www.baidu.com
Accept:*/*
Accept-Encoding:gzip, deflate, sdch
Accept-Language:zh-CN,zh;q=0.8,en;q=0.6
Connection:keep-alive
Content-Type:text/plain; charset=utf-8
Cookie:BDUSS=1hCVG9GN29OSkkwdld-MEh3enJBLUVnZGxKRTB5NTBCQW5BamRobTB4SGtzTWxVQVFBQUFBJCQAAAAAAAAAAAEAAADZ4YEvx6PE47XEX1pVT8rWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOQjolTkI6JUT; BAIDUID=8BD0E853CDCBAD524D6691E5AE0C61BB:FG=1; BAIDUPSID=8BD0E853CDCBAD524D6691E5AE0C61BB; locale=zh; MCITY=-289%3A; B64_BOT=1; BD_HOME=1; BD_UPN=123253; BDRCVFR[feWj1Vr5u3D]=I67x6TjHwwYf0; H_PS_645EC=a1bfJPwk9lOpMwLUJPTu1EGEjyg7U%2B0iMwXeWzgjyMiK62RLlrkuWmGwFvFTes98m0qN; BD_CK_SAM=1; BDSVRTM=84; H_PS_PSSID=12760_12528_1443_12772_12691_12717_12721_12728_12735_12739_12743_12763_12781_8498_11422
Host:www.baidu.com
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.76 Safari/537.36 

除了GET www.baidu.com之外全是headers

发出请求后,服务器返回响应,响应的格式如下


响应的格式
  • Response Code 表示请求的状态。例如404Not found code 200表示成功
  • Response Header表示返回信息的头信息
  • Response Body 包含实际数据

例如对www.baidu.com执行GET方法
Response Code

Status Code:200 OK 表示请求成功

Response Header

BDPAGETYPE:2
BDQID:0xf0ed07ea0034f3f2
BDUSERID:797041113
Cache-Control:private
Connection:keep-alive
Content-Encoding:gzip
Content-Type:text/html
Date:Mon, 09 Mar 2015 01:53:10 GMT
Expires:Mon, 09 Mar 2015 01:53:10 GMT
Server:BWS/1.1
Set-Cookie:BDSVRTM=326; path=/
Set-Cookie:BD_HOME=1; path=/
Set-Cookie:H_PS_PSSID=12760_12528_1443_12772_12691_12717_12721_12728_12735_12739_12743_12763_12781_8498_11422; path=/; domain=.baidu.com
Transfer-Encoding:chunked
Via:1.1 hkidc-dmz-wsa-4-mgmt.cisco.com:80 (Cisco-WSA/8.5.0-497)

这里主要介绍一下cookie

2.1 cookie

Cookie技术是客户端的解决方案,Cookie就是由服务器发给客户端的特殊信息,而这些信息以文本文件的方式存放在客户端,然后客户端每次向服务器发送请求的时候都会带上这些特殊的信息。让我们说得更具体一些:当用户使用浏览器访问一个支持Cookie的网站的时候,用户会提供包括用户名在内的个人信息并且提交至服务器;接着,服务器在向客户端回传相应的超文本的同时也会发回这些个人信息,当然这些信息并不是存放在HTTP响应体(Response Body)中的,而是存放于HTTP响应头(Response Header);当客户端浏览器接收到来自服务器的响应之后,浏览器会将这些信息存放在一个统一的位置,对于Windows操作系统而言,我们可以从: [系统盘]:\Documents and Settings[用户名]\Cookies目录中找到存储的Cookie;自此,客户端再向服务器发送请求的时候,都会把相应的Cookie再次发回至服务器。而这次,Cookie信息则存放在HTTP请求头(Request Header)了。有了Cookie这样的技术实现,服务器在接收到来自客户端浏览器的请求之后,就能够通过分析存放于请求头的Cookie得到客户端特有的信息,从而动态生成与该客户端相对应的内容。通常,我们可以从很多网站的登录界面中看到“请记住我”这样的选项,如果你勾选了它之后再登录,那么在下一次访问该网站的时候就不需要进行重复而繁琐的登录动作了,而这个功能就是通过Cookie实现的。

2.2 cookie

Session是另一种记录客户状态的机制,不同的是Cookie保存在客户端浏览器中,而Session保存在服务器上。客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上。这就是Session。客户端浏览器再次访问时只需要从该Session中查找该客户的状态就可以了。
如果说Cookie机制是通过检查客户身上的“通行证”来确定客户身份的话,那么Session机制就是通过检查服务器上的“客户明细表”来确认客户身份。Session相当于程序在服务器上建立的一份客户档案,客户来访的时候只需要查询客户档案表就可以了。

2.3 token

token的意思是“令牌”,是用户身份的验证方式,最简单的token组成:uid(用户唯一的身份标识)、time(当前时间的时间戳)、sign(签名,由token的前几位+盐以哈希算法压缩成一定长的十六进制字符串,可以防止恶意第三方拼接token请求服务器)。还可以把不变的参数也放进token,避免多次查库

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,684评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,143评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,214评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,788评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,796评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,665评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,027评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,679评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,346评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,664评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,766评论 1 331
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,412评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,015评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,974评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,073评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,501评论 2 343

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,596评论 18 139
  • 我不想破茧成蝶, 我只想让自己蜷在茧中, 隔断了外面的世界, 绘幻自己的世界, 自由自在, 随心所欲。 放飞思想,...
    尘默一生阅读 329评论 0 0
  • 〖Striping〗条纹☞「音乐会」 音乐总是能引起共鸣 无关年代 无关性别
    肥鸽子麻麻阅读 113评论 0 0
  • 恋上生病的幸福 大雁以天空为床摆着大字;萤火虫以夜晚为幕闪着光芒;杨柳以流水为乐在风中舞动探戈。云爱上了风,追逐着...
    二月219阅读 190评论 0 0
  • (上期推荐双胆09全中) 独胆:4 二胆:45 三胆:045 定位百:0475 十位:3458 个位:...
    fedb3226e1a3阅读 418评论 0 0