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

相關文章
相關標籤/搜索