網(wǎng)站開發(fā)付費視頻才能觀看小程序開發(fā)公司排行榜
0 概念
REST2SQL實現(xiàn)連接數(shù)據(jù)庫,數(shù)據(jù)庫的表或視圖即可提供REST的GET\POST\PUT\DELETE請求,SQL可執(zhí)行SQLECT\INSERT\UPDATE\DELETE語句。
0.1 RDB = Relational Database
即關(guān)系型數(shù)據(jù)庫(簡稱 RDB)是一種以關(guān)系(即表格)為基礎(chǔ)的數(shù)據(jù)庫,它采用了關(guān)系代數(shù)等數(shù)學概念和方法來處理數(shù)據(jù)。關(guān)系型數(shù)據(jù)庫最早由 E.F. Codd 在 1970 年提出,其核心思想是將數(shù)據(jù)存儲在由多個表格組成的關(guān)系中,每個表格包含多行數(shù)據(jù)和多個列(即屬性),每個屬性只有一種數(shù)據(jù)類型。
常見的關(guān)系型數(shù)據(jù)庫包括 MySQL、Oracle、Microsoft SQL Server、PostgreSQL 和 SQLite 等。
0.2 SQL = Structured Query Language
即結(jié)構(gòu)化查詢語言,具有數(shù)據(jù)操縱和數(shù)據(jù)定義等多種功能的數(shù)據(jù)庫語言,這種語言具有交互性特點,能為用戶提供極大的便利,數(shù)據(jù)庫管理系統(tǒng)應(yīng)充分利用SQL語言提高計算機應(yīng)用系統(tǒng)的工作質(zhì)量與效率。SQL語言不僅能獨立應(yīng)用于終端,還可以作為子語言為其他程序設(shè)計提供有效助力,該程序應(yīng)用中,SQL可與其他程序語言一起優(yōu)化程序功能,進而為用戶提供更多更全面的信息。
SQL語言的組成:
1.一個SQL數(shù)據(jù)庫是表(Table)的集合,它由一個或多個SQL模式定義。
2.一個SQL表由行集構(gòu)成,一行是列的序列(集合),每列與行對應(yīng)一個數(shù)據(jù)項。
3.一個表或者是一個基本表或者是一個視圖?;颈硎菍嶋H存儲在數(shù)據(jù)庫的表,而視圖是由若干基本表或其他視圖構(gòu)成的表的定義。
4.一個基本表可以跨一個或多個存儲文件,一個存儲文件也可存放一個或多個基本表。每個存儲文件與外部存儲上一個物理文件對應(yīng)。
5.用戶可以用SQL語句對視圖和基本表進行查詢等操作。在用戶角度來看,視圖和基本表是一樣的,沒有區(qū)別,都是關(guān)系(表格)。
6.SQL用戶可以是應(yīng)用程序,也可以是終端用戶。SQL語句可嵌入在宿主語言的程序中使用。SQL用戶也能作為獨立的用戶接口,供交互環(huán)境下的終端用戶使用。
SQL 的 Insert Select Update Delete 對應(yīng)CRUD
0.3 REST = Representational State Transfer
REST是一種基于HTTP協(xié)議的軟件架構(gòu)風格,它提出了一組設(shè)計原則和約束條件,用于構(gòu)建可靠、可擴展、易于維護的分布式系統(tǒng)。REST不是具體的技術(shù)規(guī)范或協(xié)議,而是一種通用的架構(gòu)設(shè)計思想。
RESTful API使用HTTP動詞(GET、POST、PUT、DELETE)來表示對資源的操作,這樣做更符合HTTP的語義,并且減少了API的復(fù)雜度。
0.4 CRUD = Create Read Update Delete
crud是指在做計算處理時的增加(Create)、讀取(Read)、更新(Update)和刪除(Delete)幾個單詞的首字母簡寫。crud主要被用在描述軟件系統(tǒng)中數(shù)據(jù)庫或者持久層的基本操作功能。
– | CRUD | SQL | REST |
---|---|---|---|
創(chuàng)建、插入 | Create | Insert | Post |
讀取、查詢 | Read | Select | Get |
更新 | Update | Update | Put |
刪除 | Delete | Delete | Delete |
1 REST設(shè)計URL
1.1 URL
http://IP或域名:端口/資源表或視圖/查詢條件
http://host:port/rest/resource/condition
GET、PUT、DELETE方法可以where條件,同SQL語句的where
GET還可以加orderby排序,同SQL語句select 的 order by
示例 :
http://127.0.0.1:5217/rest/n5217_v/?where=f_gp > '800'&orderby=f_gp desc
1.2 Data
數(shù)據(jù)提交采用JSON格式。POST和PUT方法需要提交數(shù)據(jù)
示例1:
{"p_id":5217,"s_mc":"白龍馬"}
示例2:
{"F_DM":"005217","N_BS":null,"N_LJ":null,"N_SJ":null,"P_ID":-5217,"S_CYM":null,"S_DP":null,"S_MC":"白龍馬"}
2 REST-Methon方法
2.1 GET
Request請求:
url資源后面可以加查詢子句,where=過濾條件, orderby=排序條件
以下示例請求都是可以的: (可以瀏覽器或postman等發(fā)起請求)
GET http://127.0.0.1:5217/rest/n5217_v
GET http://127.0.0.1:5217/rest/n5217_v/?where=f_gp > '800'
GET http://127.0.0.1:5217/rest/n5217_v/?orderby=f_gp desc
GET http://127.0.0.1:5217/rest/n5217_v/?where=f_gp > '800'&orderby=f_gp desc
GET http://127.0.0.1:5217/rest/n5217_v/?orderby=f_gp desc&where=f_gp > '800'
GET http://127.0.0.1:5217/rest/n5217_v/?orderby=f_gp desc&where=f_gp > '800' and f_dm is null
CURL請求示例:注意特殊字符需要轉(zhuǎn)義
curl -X GET http://127.0.0.1:5217/rest/n5217_v/?where=f_gp%3E'300900'
Response返回: 結(jié)果用JSON,內(nèi)容包括請求條件和查詢結(jié)果集。
{"Request":{"Content-Type": "","Data": "","Host": "127.0.0.1:5217","Method": "GET","OrderBy": "f_gp desc","Path": "/rest/n5217_v/","RESTorSQL": "REST","ResName": "n5217_v","Where": "f_gp \u003e '800' and k_dm is null"
},
"Response":[{"F_GP": "835640","F_NEW": "調(diào)出","K_DM": null,"K_MC": null,"N_DSP": 17.78,"N_ZZXJ": null,"S_DCR": "2023-10-24","S_MC": "富士達","S_RXR": "2023-04-28"},{"F_GP": "834599","F_NEW": "調(diào)出","K_DM": null,"K_MC": null,"N_DSP": 10.13,"N_ZZXJ": null,"S_DCR": "2023-10-27","S_MC": "同力股份","S_RXR": "2023-04-26"},{"F_GP": "834062","F_NEW": null,"K_DM": null,"K_MC": null,"N_DSP": 6.16,"N_ZZXJ": null,"S_DCR": null,"S_MC": "科潤智控","S_RXR": "2023-08-29"},{"F_GP": "833533","F_NEW": null,"K_DM": null,"K_MC": null,"N_DSP": 19.61,"N_ZZXJ": null,"S_DCR": null,"S_MC": "駿創(chuàng)科技","S_RXR": "2023-08-23"},{"F_GP": "830839","F_NEW": "新晉","K_DM": null,"K_MC": null,"N_DSP": 10.68,"N_ZZXJ": null,"S_DCR": null,"S_MC": "萬通液壓","S_RXR": "2023-10-26"}
]}
2.2 POST
Request請求:
Data數(shù)據(jù):采用JSON提交 ,Curl的 --Data 項
curl -X POST http://127.0.0.1:5217/rest/atop --data {\"p_id\":800}
Response返回: 結(jié)果用JSON,內(nèi)容包括新插入的結(jié)果集。
{"Request":{"Content-Type": "application/x-www-form-urlencoded","Data": {"p_id": 800},"Host": "127.0.0.1:5217","Method": "POST","OrderBy": "","Path": "/rest/atop","RESTorSQL": "REST","ResName": "atop","Where": ""
},
"Response":{"Data":{"p_id": 800
},"Row":{"Insert rowsAffected": 1
}}}
2.3 PUT
Request請求:
url資源后面可以加查詢子句,where="定位要更新的資源集。
Data數(shù)據(jù):采用JSON提交 ,Curl的 --Data 項
curl -X PUT http://127.0.0.1:5217/rest/atop/?where=p_id=800 --data {\"f_dm\":\"800\"}
Response返回: 結(jié)果用JSON, 內(nèi)容包括被更新后的結(jié)果集,更新影響的總行數(shù)。
{"Request":{"Content-Type": "application/x-www-form-urlencoded","Data": {"f_dm": "800"},"Host": "127.0.0.1:5217","Method": "PUT","OrderBy": "","Path": "/rest/atop/","RESTorSQL": "REST","ResName": "atop","Where": "p_id=800"
},
"Response":{"Data":{"f_dm": "800"
},"Row":{"Update rowsAffected":1}}}
2.4 DELETE
Request請求:
url資源后面可以加查詢子句,where= 定位要更新的資源集。
curl -X DELETE http://127.0.0.1:5217/rest/atop/?where=p_id=800
Response返回: 結(jié)果用JSON, 內(nèi)容包括被刪除的結(jié)果集,刪除影響的總行數(shù)。
{"Request":{"Content-Type": "","Data": "","Host": "127.0.0.1:5217","Method": "DELETE","OrderBy": "","Path": "/rest/atop/","RESTorSQL": "REST","ResName": "atop","Where": "p_id=800"
},
"Response":{"Delete rowsAffected": 1
}}
3 URL直接執(zhí)行SQL設(shè)計
URL欄可以直接輸入SQL并執(zhí)行,只支持SELECT,INSERT,UPDATE,DELETE
示例:
Request請求:
http://127.0.0.1:5217/sql/select * from atop
http://127.0.0.1:5217/sql/insert into atop (p_id) values(5217)
http://127.0.0.1:5217/sql/update atop set s_mc = '白龍馬'
http://127.0.0.1:5217/sql/delete from atop where p_id = 5217
Response返回結(jié)果:
{"Request":{"Content-Type": "","Data": "","Host": "127.0.0.1:5217","Method": "GET","OrderBy": "","Path": "/sql/select * from atop","RESTorSQL": "SQL","ResName": "select * from atop","Where": ""
},
"Response":[{"F_DM": "005217","N_BS": null,"N_LJ": null,"N_SJ": null,"P_ID": -5217,"S_CYM": null,"S_DP": null,"S_MC": "白龍馬"}]}