Restful levels&HATEOAS:
什么是RESTful:
REST这个词,是Roy Thomas Fielding在他2000年的博士论文中提出的。翻译过来就是"表现层状态转化。”Fielding在论文中将REST定位为“分布式超媒体应用(Distributed Hypermedia System)”的架构风格,它在文中提到一个名为“HATEOAS(Hypermedia as the engine of application state)”的概念。
什么是HATEOAS:
要达到这个目的,就要求在表述格式里边加入链接来引导客户端。在《RESTFul Web Services》一书中,作者把这种具有链接的特性成为连通性。
RESTful API最好做到Hypermedia,或HATEOAS,即返回结果中提供链接,连向其他API方法,使得用户不查文档,也知道下一步应该做什么。比如,当用户向api.example.com的根目录发出请求,会得到这样一个文档。
{"link": {
"rel": "collection https://www.example.com/zoos",
"href": "https://api.example.com/zoos",
"title": "List of zoos",
"type": "application/vnd.yourformat+json"
}}
上面代码表示,文档中有一个link属性,用户读取这个属性就知道下一步该调用什么API了。rel表示这个API与当前网址的关系(collection关系,并给出该collection的网址),href表示API的路径,title表示API的标题,type表示返回类型。
Hypermedia API的设计被称为HATEOAS。Github的API就是这种设计,访问api.github.com会得到一个所有可用API的网址列表。
{
"current_user_url": "https://api.github.com/user",
"authorizations_url": "https://api.github.com/authorizations",
// ...
}
从上面可以看到,如果想获取当前用户的信息,应该去访问api.github.com/user,然后就得到了下面结果。
{
"message": "Requires authentication",
"documentation_url": "https://developer.github.com/v3"
}
层次的意义:
Level 1通过使用分而治之来解决处理复杂性的问题,将大型服务端点分解为多个资源。
Level 2引入了一组标准动词,以便我们以相同的方式处理类似的情况,消除不必要的变化。
Level 3引入了可发现性,提供了一种使协议更加自我记录的方法。
什么是LDAP?
(一)在介绍什么是LDAP之前,我们先来复习一个东西:“什么是目录服务?”
1. 目录服务是一个特殊的数据库,用来保存描述性的、基于属性的详细信息,支持过滤功能。
2. 是动态的,灵活的,易扩展的。
如:人员组织管理,电话簿,地址簿。
(二)了解完目录服务后,我们再来看看LDAP的介绍:
LDAP(Light Directory Access Portocol),它是基于X.500标准的轻量级目录访问协议。
目录是一个为查询、浏览和搜索而优化的数据库,它成树状结构组织数据,类似文件目录一样。
目录数据库和关系数据库不同,它有优异的读性能,但写性能差,并且没有事务处理、回滚等复杂功能,不适于存储修改频繁的数据。所以目录天生是用来查询的,就好象它的名字一样。
LDAP目录服务是由目录数据库和一套访问协议组成的系统。
优势:
LDAP是开放的Internet标准,支持跨平台的Internet协议,在业界中得到广泛认可的,并且市场上或者开源社区上的大多产品都加入了对LDAP的支持,因此对于这类系统,不需单独定制,只需要通过LDAP做简单的配置就可以与服务器做认证交互。“简单粗暴”,可以大大降低重复开发和对接的成本。
LDAP目录树概念:
1. 目录树:在一个目录服务系统中,整个目录信息集可以表示为一个目录信息树,树中的每个节点是一个条目。
2. 条目:每个条目就是一条记录,每个条目有自己的唯一可区别的名称(DN)。
3. 对象类:与某个实体类型对应的一组属性,对象类是可以继承的,这样父类的必须属性也会被继承下来。
4. 属性:描述条目的某个方面的信息,一个属性由一个属性类型和一个或多个属性值组成,属性有必须属性和非必须属性
spring history:
2004年 Spring Framework 1.0 final
正式问世。
1.在Spring1.x时代,都是通过xml文件配置bean,随着项目的不断扩大,需要将xml配置分放到不同的配置文件中,需要频繁的在java类和xml配置文件中切换。
2.随着JDK 1.5带来的注解支持,Spring2.x可以使用注解对Bean进行申明和注入,大大的减少了xml配置文件,同时也大大简化了项目的开发。
3.从Spring3.x开始提供了Java配置方式,使用Java配置方式可以更好的理解你配置的Bean,现在我们就处于这个时代,并且Spring4.x和Spring boot都推荐使用java配置的方式。
Java配置是Spring4.x推荐的配置方式,可以完全替代xml配置。
(Spring的Java配置方式是通过 @Configuration 和 @Bean 这两个注解实现的:
1、@Configuration 作用于类上,相当于一个xml配置文件;
2、@Bean 作用于方法上,相当于xml配置中的<bean>;)
CORS是什么:
CORS(Cross-Origin Resource Sharing 跨源资源共享),当一个请求url的协议、域名、端口三者之间任意一与当前页面地址不同即为跨域。
例如最常见的,在一个域名下的网页中,调用另一个域名中的资源。
出于安全原因,浏览器限制从脚本内发起的跨源HTTP请求。(并不一定是浏览器限制了发起跨站请求,也可能是跨站请求可以正常发起,但是返回结果被浏览器拦截了。)
跨域资源共享( CORS )机制允许 Web 应用服务器进行跨域访问控制,从而使跨域数据传输得以安全进行。现代浏览器支持在 API 容器中(例如 XMLHttpRequest
或 Fetch )使用 CORS,以降低跨域 HTTP 请求所带来的风险。
CORS的作用:
为了改善网络应用程序,开发人员要求浏览器供应商允许跨域请求。跨域请求主要用于:
调用XMLHttpRequest或fetchAPI通过跨站点方式访问资源
网络字体,例如Bootstrap(通过CSS使用@font-face 跨域调用字体)
通过canvas标签,绘制图表和视频。
什么情况下需要 CORS:
跨域资源共享标准( cross-origin sharing standard )允许在下列场景中使用跨域 HTTP 请求:
由 XMLHttpRequest 或 Fetch 发起的跨域 HTTP 请求。
Web 字体 (CSS 中通过 @font-face 使用跨域字体资源), 因此,网站就可以发布 TrueType 字体资源,并只允许已授权网站进行跨站调用。
WebGL 贴图
使用 drawImage 将 Images/video 画面绘制到 canvas
样式表(使用 CSSOM)
CORS实现:
CORS也有一些限制,两种模型可以实现:
一.首先,将MySQL APT存储库添加到系统的软件存储库列表中
1.转到https://dev.mysql.com/downloads/repo/apt/上的MySQL APT存储库的下载页面,
选择并下载适用于Linux发行版的发行包的下载路径 ,
使用以下命令下载:
1
|
wget https: //dev .mysql.com /get/mysql-apt-config_0 .8.12-1_all.deb |
2.使用以下命令安装下载的发行包,替换 version-specific-package-name
为下载的包的名称(如果未在包所在的文件夹中运行命令,则以其路径开头):
1
|
sudo dpkg -i /PATH/version-specific-package-name .deb |
我的在当前文件下运行的是以下命令:
1
|
sudo dpkg -i mysql-apt-config_0.8.12-1_all.deb |
注:中间弹窗直接↓到点”OK“
3.使用以下命令从MySQL APT存储库更新包信息(此步骤是必需的):
1
|
sudo apt-get update |
二.使用APT安装MySQL:
1
|
sudo apt-get install mysql-server |
注:
其中两个弹窗
第一个是确认密码(设置数据库密码)
另一个是选择加密方式,工具较新选第一个,较老选第二个
下载时间略长稍作等待,到这就安装完成啦
三.开放远程访问
开放远程访问,以连接可视化图形界面
1.连接到数据库
1
|
mysql -u root -p |
输入密码
2.查看数据库会看到有一个mysql
1
|
show databases; |
3.选择当前使用数据库为mysql
1
|
use mysql; |
4.查看权限
1
|
select host, user , authentication_string, plugin from user ; |
5.更改加密方式
******是数据库密码
1
|
ALTER USER 'root' @ 'localhost' IDENTIFIED WITH mysql_native_password BY '******' ; |
1
|
grant all on *.* to 'root' @ '%' ; |
7.执行刷新权限
1
|
flush privileges ; |
另有一个update的方式可参考https://blog.csdn.net/qq_40147863/article/details/86485439?tdsourcetag=s_pctim_aiomsg
update对表结构直接修改如果把%写错成/,就会造成root账户就登陆不了了,使用需谨慎
因此我们一般使用mysql里面的命令