提到服務端不得不說客戶端??蛻舳耍–lient)是指與服務端相對的,提供用戶操作界面,實現(xiàn)業(yè)務管理的桌面應用程序、Web頁面、小程序或手機App,旨在收集用戶意圖、為用戶展現(xiàn)服務結(jié)果、在用戶本地服務的程序。
服務端-客戶端
服務端和客戶端
網(wǎng)絡(luò)服務的軟件分B/S(瀏覽器Browser/服務器Server)和C/S(客戶端Client/服務器Server)兩種模式?;贐/S模式的軟件又叫Web應用。Web應用可分為前端(在瀏覽器中執(zhí)行的部分)和后端(在服務器中執(zhí)行的部分),后端又叫服務端。
隨著大前端技術(shù)的興起,目前這兩種技術(shù)劃分方法,已經(jīng)沒有了嚴格的界限,例如:非原生App和小程序其本質(zhì)都是Web。
無論什么形式的客戶端都需要服務端提供必要的服務——數(shù)據(jù)庫服務,Web Server、接口等。
服務端開發(fā),就是開發(fā)運行在服務器端的程序,為客戶端提供API接口服務。軟件客戶端和服務端的協(xié)作,分為B/S(瀏覽器/服務器)和C/S(客戶端/服務器)兩種模式,瀏覽器就是一種通用的客戶端,現(xiàn)在流行的APP就相當于個性化的客戶端,無論B/S還是C/S都要有相應的服務器端程序提供服務。對于絕大部分應用,服務端的核心就是數(shù)據(jù)庫,服務器端的程序就是根據(jù)應用需求來管理和操作服務端的數(shù)據(jù)庫,通過對數(shù)據(jù)庫的操作,返回滿足用戶需求的數(shù)據(jù)。服務端開發(fā)主要就是根據(jù)業(yè)務邏輯要求實現(xiàn)業(yè)務功能和性能要求。
服務端開發(fā)
今天要講的服務端特指可以為客戶端提供數(shù)據(jù)、業(yè)務處理功能的接口API。
一般開發(fā)模式下,開發(fā)服務端需要用到至少一門基礎(chǔ)開發(fā)語言和數(shù)據(jù)庫。每種開發(fā)語言理論上是通用的,可以實現(xiàn)任何業(yè)務場景,幾乎任何一種開發(fā)語言都能作為服務端程序語言。但是,術(shù)業(yè)有專攻,不同的開發(fā)語言在某個場景應用的適用度、難易度不同,所以選用什么語言、什么數(shù)據(jù)庫,取決于是否便于解決實際問題和需求。
使用基礎(chǔ)開發(fā)語言實現(xiàn)服務端開發(fā),需要解決客戶端請求接口,數(shù)據(jù)庫訪問、操作,業(yè)務邏輯的實現(xiàn)算法。而在有效云開發(fā)平臺依然只使用SQL、JS就可實現(xiàn)服務端的開發(fā)。
服務端開發(fā)
僅使用SQL和JS實現(xiàn)服務端開發(fā)
開發(fā)服務端需要實現(xiàn)以下三部分功能:客戶端接口、業(yè)務邏輯處理、后臺數(shù)據(jù)庫操作。
1、服務接口定義
客戶端接口一般情況下通過http協(xié)議get或post發(fā)起請求,根據(jù)應用場景的需求提交請求參數(shù)數(shù)據(jù),服務端獲取參數(shù)。
進入“有效云開發(fā)集成環(huán)境”,進入【接口管理】,新建接口:
接口定義
接口可以定義接口
● 模塊(便于管理)
● 代號(接口的詳細訪問地址)數(shù)據(jù)庫綁定系統(tǒng)設(shè)置的鏈接。
● 模板:模板通過系統(tǒng)腳本的形式返回Json格式的數(shù)據(jù),開發(fā)者可以根據(jù)業(yè)務 需求自己定義,其中可以訪問客戶端的請求參數(shù)、接口返回參數(shù)等等。
返回接口定義:
{{if .r}}{ "code": 100, "goods_id":"{{.r.goods_id}}", "goods_count":"{{.r.goods_count}}", "msg": "ok", "extra": "", "result": [] }{{else}}{ "code": 104, "msg": "查詢失敗", "extra": "系統(tǒng)異常,未能獲得庫存數(shù)量", "result": [] }{{end}}
2、接口參數(shù)
這里的參數(shù)是廣義上的,即可以是客戶端提交的參數(shù),也可以是服務端計算得到的參數(shù)。
在“有效云集成開發(fā)環(huán)境”中選中某接口,點擊操作欄的【參數(shù)】按鈕
接口參數(shù)
參數(shù)r為計算參數(shù),通過SQL直接查詢得到客戶端傳遞的商品ID(goods_id)對應商品的庫存數(shù)量。
計算參數(shù)
SQL:
select goods_id,goods_count from tb_store where goods_id={{.goods_id}} and shop_id={{ME.deptid}} limit 1;
在“有效云開發(fā)平臺”開發(fā)接口,只需要編寫極少量的代碼。
客戶端的調(diào)用,與采用直接通過基礎(chǔ)開發(fā)語言開發(fā)的接口是相同的。
here = this;if(here.form["goods_id"]!="" && here.form["goods_count"]!=""){ var data=new FormData(); data.append("goods_id",here.form["goods_id"]); axios.post('/api/{{APPID}}/storeapp/getstorecount',data).then(function (res) { if(res.data.code==100){ var out_count=parseInt(here.form["goods_count"]); var store_count=parseInt(res.data.goods_count); if( out_count > store_count ){ here.form["goods_count"] = ""; window.top.vm.$message.error('當前庫存不足,請重新輸入出庫數(shù)量!'); } }else{ window.top.vm.$message.error('商品庫存校驗失敗,請人工核驗當前庫存!'); } }).catch(function (error) {});}
該代碼設(shè)置在了,出庫操作出庫數(shù)量組件的 blur 時間中。
實際運行情況
感謝閱讀,我是在軟件開發(fā)平臺研究中不停前行的草根開發(fā)者,感謝關(guān)注支持。
版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請發(fā)送郵件至 舉報,一經(jīng)查實,本站將立刻刪除。