speedcubing
ckcsc
程式語言
Javascript
Python
Java
Webserver
Node.js / ExpressJS
Flask
Spring Boot
Proxy
Nginx
API
REST
Database
HyperText Transfer Protocol
詳細: RFC 9110
[scheme]://[authority]/[path]?[query]#[fragment]
https://example.com:123/path/data?key=value#fragment
GET
HEAD
POST
PUT
DELETE
...
Successful 2xx
Redirection 3xx
Client Error 4xx
Server Error 5xx
JavaScript Object Notation
JavaScript 物件、陣列、數字、字串、布林、null
所使用的序列化格式
現今被廣泛用於資料交換,不限程式語言
example.com?id=1
Server 直接回覆
前端:
後端:
Search Engine Optimization
簡單講
現代 Web 常見作法
Application Programming Interface
一個程式提供給另一個程式使用的介面
(也不一定是程式就是)
舉例這些 API
動詞: Request Method
名詞: URL Path
備註,沒有正式標準
Create
Read
Update
Delete
POST
GET
PUT
DELETE
GET /users
GET /users/1
POST /users
PUT /users/1
DELETE /users/1
POST /checkAccess
讀取所有 user
讀取 user 1
新增使用者 (req)
整筆更新 (req)
刪除 user 1
做行為也用 POST
想像成 File System,就好理解了
假設 user 物件結構是 id, name, email
GET /users
res: 200 OK
payload: [user1]
res: 200 OK
payload: []
payload: user1
res: 404 Not Found
POST /users body: {name,email}
res: 201 Created
payload: user2
res: 409 Conflict
PUT /users/1 body: {name,email}
res: 200 OK
payload: user1
res: 404 Not Found
DELETE /users/1
res: 204 No Content
res: 404 Not Found
API 後面不一定是 DB
GET /weather
GET /sysinfo
GET /prime/89
後面可能是氣象局 API
後面是 /proc 的資料
純運算回傳
可以在資料中自訂更詳細的 error code
但是你要讓處理前端的人知道
請不要幹這種事,想說裡面都寫 code 了
HTTP 就都丟 200
尾隨斜線,強迫症惡夢
題外話:
不影響
總之就一個可留意的小細節
寫一個前後端分離網站 (node.js + Vite.js)
使用 Nginx 把他們 proxy 在一起,避免 CORS
/frontend
/backend
DB
優化、架構
DevOps
Networking
但實務上也不一定能遇到
所以我就常在家裡亂玩,看能玩什麼
像是最近在小玩 Grafana & K8S
monitor + 嘗試讓他 rolling update
前天玩 RouterOS,改 pppoe,練一下 networking
結果家裡整天沒網路,modem 重開也沒用
By speedcubing