本地化存储


一、cookie

为什么有 cookie?

http 上下文无关,无状态协议
set-cookie 服务器设置,前端无法设置

现象:
登录百度,但是百度知道,百度贴吧都顺便登录:Application 下 Domain 决定的
cookie 性质:
1、cookie 不可跨域
2、cookie 存储在浏览器里面,同一个浏览器下的不同页面能互相访问;不同浏览器同一个域名下不能访问
3、cookie 有数量与大小的限制
1、数量在 50 个左右
2、大小在 4kb 左右
4、cookie 的存储时间非常灵活
5、cookie 不光可以服务器设置,客户端(前端)也可以设置

前端设置 cookie:document.cookie
格式:key:value

document.cookie = "name=kaivon";
document.cookie = "name=kaivon; age=18"; //document.cookie只能设置一次cookie,这次设置是错的

cookie 的属性
1、name   cookie 的名字,唯一性
2、value cookie 的值
3、domain   设置 cookie 在哪个域下是有效的
4、path   cookie 的路径

//cookie属性:只能在规定的url下使用
document.cookie = 'color=red; domain=127.0.0.2; path=/docs';//路径随意填
访问怎么访问呢?
把路径改成http://127.0.0.1:5500/docs就有color属性了

5、expires  cookie 的过期时间   时间点。如果不设置,默认浏览器关闭时候删除(expires:session)
(会话期 cookie)
要求的日期格式 GMT

console.log(new Date());
document.cookie = 'margin=20; expires=' + new Date(2008, 1, 1);//2月1号,月份从0开始
因为2008已经过去,导致margin过期,消失
注意:expires取得是客户端电脑的时间

6、max-age  cookie 的有效期   秒为单位的时间段
-1(临时 cookies) 0(马上要挂了) 正数(有效)

//document.cookie='padding=30; max-age=1';1s over
document.cookie = "padding=30; max-age=5";

之前是写,现在我想查看一下 cookies

setTimeout(function () {
  console.log(document.cookie);
}, 4000);

7、HttpOnly 有这个标记的 cookie,前端是无法获取的
8、Secure   设置 cookie 只能有过 https 协议传输
9、SameSite 设置 cookie 在跨域请求的时候不能被发送

二、localstorage

H5 提供了 Web Storage(和 cookie 一样,不能跨域)
**5Mb **
与 http 无关
保存用户偏好设置,表单历史输入,购物车都是 localStorage
web strorage 提供了两个对象:
**localStorage 不会过期    **
sessionStorage 会过期(会话)

console.dir(Storage);
console.log(localStorage, sessionStorage); //继承Storage上的属性和方法

**            1、length    本地存储数据的数量**
**            2、key()     通过索引找到存储的数据**
**            3、getItem()     通过键名取到本地存储的数据**
**            4、setItem()     设置一个本地存储数据**
**            5、removeItem()  删除一个本地存储数据**
**            6、clear()       清空本地存储数据**

console.log(localStorage.length);

localStorage.setItem("name", "kaivon");
localStorage.setItem("age", "18");
//存储对象
var color = ["red", "green"]; //"red", "green"
var color = { c1: "red", c2: "green" }; //[object Object]
localStorage.setItem("color", JSON.stringify(color));
console.log(JSON.parse(localStorage.getItem("color")));

localStorage.removeItem("color"); //删除属性
//localStorage.clear();完全清空

删除 localStroage 的其他方法:浏览器无痕模式

三、Restful API

<ul>
  {dede:arclist typeid="1" row="6"}
  <li>[field:title function="cn_substr(@me, 63)" /]</li>
  {/dede:arclist}
</ul>

dede cms

Restful API 是一种互联网软件架构的设计规范、设计指南、设计风格、设计原则

1、API   Application Programming Interface        应用程序接口(接口)
**2、Rest  Resource Representational State Transfer    **
apache
(1)Resource
资源  
URI:统一资源标识符。是一个字符串。用来标识互联网资源的名称
URL:统一资源定位符。它是一种具体的 URI
(2)Representational
表现层
文本  text\html\xml\json\二进制
(3)State Transfer
状态转化

Restful API 具体设计规范

1、协议
**     HTTPS**
2、域名
**             https://api.kaivon.com
**             https://www.kaivon.com/api/
3、版本
**             https://api.kaivon.com/v1
4、路径
**             https://api.kaivon.com/v1/blogs
** 5、方法

**         1、GET    获取资源

**                        GET https://api.kaivon.com/v1/blogs  获取所有的文章

**                        GET https://api.kaivon.com/v1/blogs/id   获取到某一篇文章

**         2、POST   添加资源**
**                        POST https://api.kaivon.com/v1/blogs     增加一篇文章**
**         3、PUT     修改资源(客户端需要提供改变后的完整资源)**
**                        POST https://api.kaivon.com/v1/blogs/id  修改某一篇文章**
**       4、PATCH  更新资源(客户端需要提供改变的属性)**
**                        PATCH https://api.kaivon.com/v1/blogs/id     更新某一篇文章**
**         5、DELETE     删除资源**
**                        DELETE https://api.kaivon.com/v1/blogs/id    删除某一篇文章**
** 6、数据过滤**
**           1、?limit=10  指定返回数据的数量**
**                        GET https://api.kaivon.com/v1/blogs?limit=10
**           2、?offset=10     指定一个偏移量

**                        GET https://api.kaivon.com/v1/blogs?offset=10
**           3、?page=2&per_page=10    指定第几页,以及每页的数量

**                        GET https://api.kaivon.com/v1/blogs?offset=10
**            4、?sortby=time&order=arc     指定返回结果按照哪个属性排序,以及排序的方式

**                        GET https://api.kaivon.com/v1/blogs?sortby=time&order=arc
** 7、状态码

** 8、返回结果**
**                    1、GET        资源对象列表(数组),如果取的是一条数据,那返回一个对象**
**                    2、POST       返回添加后的资源对象,以及有可能会加上是否成功**
**                    3、PUT        返回修改后的资源对象,以及有可能会加上是否成功**
**                    4、PATCH  返回更新后的资源对象,以及有可能会加上是否成功**
**                    5、DELETE     返回空,以及有可能会加上是否成功**
** 9、返回的数据格式**
**                     尽量使用 JSON,避免使用 XML**

总结

1、看 URL 就知道要什么
2、看 HTTP method 就知道干什么
3、看 HTTP stuts code 就知道结果如何


文章作者: Sunny
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Sunny !
  目录