# 介紹網頁和CRUD應用
###### tags: `MCL` `108-2-project`
## 壹、介紹網頁功能、CRUD
:::success
網頁連結: http://140.115.26.43:8181/ :tada:
:::
#### 準資料存取規範CRUD
+ 建立 Create
+ 讀取 Read
+ 更新 Update
+ 刪除 Delete
>##### 四個動作合併稱之為 CRUD,通常在 SQL資料庫或API,做某一資源存取的時候會遇到。
> [color= #007500]
:::spoiler 在 Wiki 上有針對常見的平台,他們處理 CRUD 的時候會分別對應什麼動作:
| Operation | SQL | HTTP | RESTful WS | DDS | MongoDB |
| ---------------- | ------ | ------------------ | ---------- | ----------- | ------- |
| Create | INSERT | PUT / POST | POST | write | Insert |
| Read (Retrieve) | SELECT | GET | GET | read / take | Find |
| Update (Modify) | UPDATE | PUT / POST / PATCH | PUT | write | Update |
| Delete (Destroy) | DELETE | DELETE | DELETE | dispose | Remove |
:::
## 貳、淺談網頁、SQL CRUD應用
### 一、淺談網頁
> LAMP是指一組通常一起使用來執行動態網站或者伺服器的自由軟體名稱首字母縮寫:
> + Linux,作業系統
> + Apache,網頁伺服器
> + MariaDB或MySQL,資料庫管理系統(或者資料庫伺服器)
> + PHP、Perl或Python,手稿語言
>
> [color=#907bf7]
> phpMyAdmin 是一個以PHP為基礎,以Web-Base方式架構在網站主機上的MySQL的資料庫管理工具,讓管理者可用Web介面管理MySQL資料庫。
> + Web介面可以成為一個簡易方式輸入繁雜SQL語法的較佳途徑
> + phpMyAdmin跟其他PHP程式一樣在網頁伺服器上執行,但是您可以在任何地方使用這些程式產生的HTML頁面,也就是於遠端管理MySQL資料庫
>
> PHP Web 框架 例如: laravel
> + 有助於減輕網頁開發時共通性活動(如: 功能、函數)的工作負荷
> https://docs.mcl.math.ncu.edu.tw/books/%E7%B6%B2%E9%A0%81%E8%A8%AD%E8%A8%88/page/ep-2-laravel-%E8%88%87-mvc
> >
> [color=#907bf7]
### 二、SQL CRUD應用
SQL(Structured Query Language),一種資料庫查詢和程式設計語言,用於存取數據以及查詢、更新和管理關係資料庫系統(例如: MySQL)。
==用到CRUD的資料庫表基礎操作==
+ INSERT(插入)
+ Select(取數)
+ UPDATE(更新)
+ DELETE(刪除)
https://medium.com/%E6%95%B8%E6%93%9A%E5%88%86%E6%9E%90%E4%B8%8D%E6%98%AF%E5%80%8B%E4%BA%8B/%E9%9B%B6%E5%9F%BA%E7%A4%8E%E5%BF%AB%E9%80%9F%E8%87%AA%E5%AD%B8sql-2%E5%A4%A9%E8%B6%B3%E7%9F%A3-4900d8b3d7c2
## 參、 HTTP CRUD應用
### 一、HTTP
**【應用層】超文本傳輸協定HTTP(HyperText Transfer Protocol)**
+ HTTP是一個客戶端(用戶)和伺服器端(網站)之間請求和應答的標準,最初設計HTTP的目的是為了提供一種發布和接收HTML頁面的方法
+ HTTP/1.1協定中共定義了八種方法(也叫「動作」)來以不同方式操作指定的資源
==常見用到CRUD的 HTTP Verb==
Create : PUT / POST
Read (Retrieve) : GET
Update (Modify) : PUT / POST / PATCH
Delete (Destroy) : DELETE
> 談 POST, PUT 和 PATCH 的應用
> https://ihower.tw/blog/archives/6483
****
**【傳輸層】傳輸控制協定TCP(Transmission Control Protocol)**
儘管TCP/IP協定是網際網路上最流行的應用,但是在HTTP協定中並沒有規定它必須使用或它支援的層。事實上HTTP可以在任何網際網路協定或其他網路上實作。HTTP假定其下層協定提供可靠的傳輸。因此,任何能夠提供這種保證的協定都可以被其使用
:::spoiler 示意圖
![Alt text](https://coolshell.cn/wp-content/uploads/2014/05/tcp_open_close.jpg)
:::
tcp狀態編碼:
+ SYN (synchronous建立聯機)
+ ACK (acknowledgement 確認)
+ PSH (push傳送)
+ FIN (finish结束)
+ RST (reset重置)
+ URG (urgent緊急)
+ Sequence number (順序號碼)
+ Acknowledge number (確認號碼)
例子: https://user-gold-cdn.xitu.io/2018/12/5/1677d7d27b90efa4?imageView2/0/w/1280/h/960/ignore-error/1
>介紹網站
**作为前端的你了解多少tcp的内容**
https://juejin.im/post/5c078058f265da611c26c235
**TCP三次握手中SYN,ACK,Seq三者的关系**
https://blog.csdn.net/u014507230/java/article/details/45310847
****
**【應用層】超文本傳輸安全協定HTTPS(HyperText Transfer Protocol Secure)**
HTTPS經由HTTP進行通訊,但利用SSL/TLS來加密封包。HTTPS開發的主要目的,是提供對網站伺服器的身分認證,保護交換資料的隱私與完整性。
S 是 Secure 的意思,HTTPS 透過 HTTP 進行通訊,但通訊過程使用 SSL/TLS 進行加密,藉由類似於前述的加密方式,在 HTTP 之上定義了相對安全的資料傳輸方法。
****
**【傳輸層】傳輸控制協定SSL/TLS**
傳輸層安全性協定TLS(Transport Layer Security)及其前身安全通訊協定SSL(Secure Sockets Layer)是一種安全協定,目的是為網際網路通訊提供安全及資料完整性保障。
SSL包含記錄層(Record Layer)和傳輸層,記錄層協定確定傳輸層資料的封裝格式。傳輸層安全協定使用X.509認證,之後利用非對稱加密演算來對通訊方做身分認證,之後交換對稱金鑰作為會談金鑰(Session key)。
> 一文搞懂 HTTP 和 HTTPS 是什麼:
https://tw.alphacamp.co/blog/http-https-difference
****
## 參考資料
### SQL基礎語句
https://medium.com/%E6%95%B8%E6%93%9A%E5%88%86%E6%9E%90%E4%B8%8D%E6%98%AF%E5%80%8B%E4%BA%8B/%E9%9B%B6%E5%9F%BA%E7%A4%8E%E5%BF%AB%E9%80%9F%E8%87%AA%E5%AD%B8sql-2%E5%A4%A9%E8%B6%B3%E7%9F%A3-4900d8b3d7c2
### CRUD in Laravel
https://docs.mcl.math.ncu.edu.tw/books/%E7%B6%B2%E9%A0%81%E8%A8%AD%E8%A8%88/page/ep-7-crud-%E6%A8%99%E6%BA%96%E8%B3%87%E6%96%99%E5%AD%98%E5%8F%96%E8%A6%8F%E7%AF%84
### Laravel 與 MVC
https://docs.mcl.math.ncu.edu.tw/books/%E7%B6%B2%E9%A0%81%E8%A8%AD%E8%A8%88/page/ep-2-laravel-%E8%88%87-mvc
### 靜態網頁伺服器&動態網頁伺服器
http://www.tsnien.idv.tw/Network_WebBook/chap6/6-8%20Web-based%20%E7%B6%B2%E8%B7%AF%E6%87%89%E7%94%A8%E6%9E%B6%E6%A7%8B.html
### 作为前端的你了解多少tcp的内容
https://juejin.im/post/5c078058f265da611c26c235
### HTTP Verbs: 談 POST, PUT 和 PATCH 的應用
https://ihower.tw/blog/archives/6483
### API 是什麼? RESTful API 又是什麼?(補充)
https://medium.com/itsems-frontend/api-%E6%98%AF%E4%BB%80%E9%BA%BC-restful-api-%E5%8F%88%E6%98%AF%E4%BB%80%E9%BA%BC-a001a85ab638
### 認識 Web API、HTTP 和 JSON 資料交換格式(補充)
https://tw.alphacamp.co/blog/api-introduction-understand-web-api-http-json