19.04.03JavaWeb and SQL作业

Restful levels&HATEOAS:

什么是RESTful:

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

什么是HATEOAS:

我们知道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的网址列表。

{
  "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也有一些限制,两种模型可以实现:

  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里面的命令

原文地址:https://www.cnblogs.com/avopen/p/10668631.html