19.04.03JavaWeb and SQL做业

Restful levels&HATEOAS:java

什么是RESTful:mysql

REST这个词,是Roy Thomas Fielding在他2000年的博士论文中提出的。翻译过来就是"表现层状态转化。”Fielding在论文中将REST定位为“分布式超媒体应用(Distributed Hypermedia System)”的架构风格,它在文中提到一个名为“HATEOAS(Hypermedia as the engine of application state)”的概念。git

什么是HATEOAS:github

咱们知道REST是使用标准的HTTP方法来操做资源的,但仅仅所以就理解成带CURD的Web数据库架构就太过于简单了。 这种说法忽略了一个核心概念: “超媒体即应用状态引擎(hypermedia as the engine of application state)”。<u> 超媒体是什么? 当你浏览Web网页时,从一个链接跳到一个页面,再从另外一个链接跳到另一个页面,就是利用了超媒体的概念: 把一个个把资源连接起来。</u>
要达到这个目的,就要求在表述格式里边加入 连接来引导客户端。在《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的网址列表。spring

{
  "current_user_url": "https://api.github.com/user", "authorizations_url": "https://api.github.com/authorizations", // ... } 

从上面能够看到,若是想获取当前用户的信息,应该去访问api.github.com/user,而后就获得了下面结果。sql

{
  "message": "Requires authentication", "documentation_url": "https://developer.github.com/v3" } 

层次的意义:数据库

Level 1经过使用分而治之来解决处理复杂性的问题,将大型服务端点分解为多个资源。json

Level 2引入了一组标准动词,以便咱们以相同的方式处理相似的状况,消除没必要要的变化。canvas

Level 3引入了可发现性,提供了一种使协议更加自我记录的方法。api

什么是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 这两个注解实现的:

一、@Configuration 做用于类上,至关于一个xml配置文件;

二、@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也有一些限制,两种模型能够实现:

  1.简单模型
  支持get/post/put/delete请求,例如返回Access-Control-Allow-Origin:*,可是不容许自定义header且会忽略cookies,且post数据格式有限制,只支持‘text/plain','application/x-www-urlencoded'and'multipart/form-data',其中’text/plain'默认支持,后面两种须要下面的预检请求和服务器协商。
  2.协商模型/预检请求(Preflighted Request)
安装SQL

一.首先,将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:

(不执行以上步骤直接执行这句获得的MySQL版本是5.7)
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.更改加密方式

   由于mysql8的加密方式不同,远程工具链接不上所以要更改加密方式

  ******是数据库密码

1
ALTER  USER  'root' @ 'localhost'  IDENTIFIED  WITH  mysql_native_password  BY  '******' ;

 
6.开放远程访问权限(受权远程链接)
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里面的命令

相关文章
相关标签/搜索