本發(fā)明涉及互聯(lián)網(wǎng)技術(shù)領(lǐng)域,特別是涉及一種rset接口實(shí)現(xiàn)方法和裝置及電子設(shè)備和計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。
背景技術(shù):
在移動(dòng)互聯(lián)網(wǎng)應(yīng)用系統(tǒng)開(kāi)發(fā)中,前端與后臺(tái)的交互都依托于接口來(lái)實(shí)現(xiàn)。
現(xiàn)有開(kāi)發(fā)接口的工具諸如swagger框架、i/odocs交互式文檔系統(tǒng)、docco文檔工具等。
雖然上述接口工具都能實(shí)現(xiàn)目的,但是使用起來(lái)的方便程度差別很大。例如,當(dāng)前端與后臺(tái)的開(kāi)發(fā)人員對(duì)接口不熟悉時(shí),在前端與后臺(tái)之間會(huì)造成溝通障礙,由此會(huì)導(dǎo)致前端與后臺(tái)的開(kāi)發(fā)浪費(fèi)很多時(shí)間。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例的目的在于提供一種rset接口實(shí)現(xiàn)方法,以解決如何便于前端與后臺(tái)溝通的技術(shù)問(wèn)題。此外,還提供一種rset接口實(shí)現(xiàn)裝置及電子設(shè)備和計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。
為了實(shí)現(xiàn)上述目的,根據(jù)本發(fā)明的一個(gè)方面,提供了以下技術(shù)方案:
一種資源表現(xiàn)形式狀態(tài)轉(zhuǎn)移rset接口實(shí)現(xiàn)方法,其中,所述rest接口用于連接前端與后臺(tái);該方法包括:
獲取前端需求數(shù)據(jù);
基于所述前端需求數(shù)據(jù),確定接口調(diào)用參數(shù)和接口返回值;
基于所述接口調(diào)用參數(shù)和所述接口返回值,按照rest規(guī)范來(lái)確定所述前端與所述后臺(tái)之間的交互操作,從而實(shí)現(xiàn)所述rest接口。
進(jìn)一步地,所述基于所述接口調(diào)用參數(shù)和所述接口返回值,按照rest規(guī)范來(lái)確定所述前端與所述后臺(tái)之間的交互操作,從而實(shí)現(xiàn)所述rest接口,具體包括:
基于所述接口調(diào)用參數(shù)和所述接口返回值、超文本預(yù)處理器thinkphp框架及其命名空間方式,并按照rest規(guī)范,構(gòu)建實(shí)現(xiàn)所述前端與所述后臺(tái)之間的交互操作的所述rest接口。
進(jìn)一步地,所述thinkphp框架包括rest控制器;所述基于所述接口調(diào)用參數(shù)和所述接口返回值、超文本預(yù)處理器thinkphp框架及其命名空間方式,并按照rest規(guī)范來(lái)構(gòu)建所述rest接口,具體包括:
基于所述接口調(diào)用參數(shù)和所述接口返回值以及所述thinkphp框架,構(gòu)建接口訪問(wèn)控制器;
將所述接口訪問(wèn)控制器繼承所述rest控制器,得到第一控制器;
在所述第一控制器中,按照所述rest規(guī)范來(lái)定義rest屬性參數(shù)和rest路由,得到第二控制器;其中,所述rest屬性參數(shù)和所述rest路由用于實(shí)現(xiàn)所述rest接口的操作;
將api功能單元封裝在命名空間中;其中,所述api功能單元與所述前端需求數(shù)據(jù)相對(duì)應(yīng);
將封裝有所述api功能單元的命名空間配置在所述第二控制器中,得到第三控制器,并將承載所述第三控制器的thinkphp框架,確定為所述rset接口。
為了實(shí)現(xiàn)上述目的,根據(jù)本發(fā)明的另一個(gè)方面,還提供了以下技術(shù)方案:
一種資源表現(xiàn)形式狀態(tài)轉(zhuǎn)移rset接口實(shí)現(xiàn)裝置,其中,所述rest接口用于連接前端與后臺(tái);所述裝置包括:
獲取模塊,用于獲取前端需求數(shù)據(jù);
第一確定模塊,用于基于所述前端需求數(shù)據(jù),確定接口調(diào)用參數(shù)和接口返回值;
第二確定模塊,用于基于所述接口調(diào)用參數(shù)和所述接口返回值,按照rest規(guī)范來(lái)確定所述前端與所述后臺(tái)之間的交互操作,從而實(shí)現(xiàn)所述rest接口。
進(jìn)一步地,所述第二確定模塊具體用于:
基于所述接口調(diào)用參數(shù)和所述接口返回值、超文本預(yù)處理器thinkphp框架及其命名空間方式,并按照rest規(guī)范,構(gòu)建實(shí)現(xiàn)所述前端與所述后臺(tái)之間的交互操作的所述rest接口。
進(jìn)一步地,所述thinkphp框架包括rest控制器;所述第二確定模塊具體包括:
構(gòu)建單元,用于基于所述接口調(diào)用參數(shù)和所述接口返回值以及所述thinkphp框架,構(gòu)建接口訪問(wèn)控制器;
繼承單元,用于將所述接口訪問(wèn)控制器繼承所述rest控制器,得到第一控制器;
定義單元,用于在所述第一控制器中,按照所述rest規(guī)范來(lái)定義rest屬性參數(shù)和rest路由,得到第二控制器;其中,所述rest屬性參數(shù)和所述rest路由用于實(shí)現(xiàn)所述rest接口的操作;
封裝單元,用于將api功能單元封裝在命名空間中;其中,所述api功能單元與所述前端需求數(shù)據(jù)相對(duì)應(yīng);
配置單元,用于將封裝有所述api功能單元的命名空間配置在所述第二控制器中,得到第三控制器,并將承載所述第三控制器的thinkphp框架,確定為所述rset接口。
為了實(shí)現(xiàn)上述目的,根據(jù)本發(fā)明的再一個(gè)方面,還提供了以下技術(shù)方案:
一種電子設(shè)備,其包括處理器、通信接口、存儲(chǔ)器和通信總線,其中,所述處理器、所述通信接口和所述存儲(chǔ)器通過(guò)所述通信總線完成相互間的通信;
所述存儲(chǔ)器,用于存放計(jì)算機(jī)程序;
所述處理器,用于執(zhí)行存儲(chǔ)器上所存放的程序時(shí),實(shí)現(xiàn)上述技術(shù)方案所述的方法步驟。
為了實(shí)現(xiàn)上述目的,根據(jù)本發(fā)明的又一個(gè)方面,還提供了以下技術(shù)方案:
一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)內(nèi)存儲(chǔ)有計(jì)算機(jī)程序,所述計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)上述技術(shù)方案所述的方法步驟。
本發(fā)明實(shí)施例提供一種rset接口實(shí)現(xiàn)方法和裝置及電子設(shè)備和計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。其中,rest接口用于連接前端與后臺(tái);該rset接口實(shí)現(xiàn)方法可以包括:獲取前端需求數(shù)據(jù);基于前端需求數(shù)據(jù),確定接口調(diào)用參數(shù)和接口返回值;基于接口調(diào)用參數(shù)和接口返回值,按照rest規(guī)范來(lái)確定前端與后臺(tái)之間的交互操作,從而實(shí)現(xiàn)rest接口。與現(xiàn)有技術(shù)相比,本發(fā)明實(shí)施例通過(guò)采取上述技術(shù)方案,由于采用rest規(guī)范來(lái)實(shí)現(xiàn)接口,所以,可以將rest規(guī)范作為接口函數(shù)注釋的模板,從而可以按照接口注釋生成接口文檔。該接口文檔對(duì)于前端與后臺(tái)來(lái)說(shuō)都是熟悉的,易于理解。因此,如果前端通過(guò)ajax(阿賈克斯,一種異步加載和局部刷新技術(shù))來(lái)調(diào)用rest接口時(shí),則可以便于前端與后臺(tái)之間的溝通;而且,可以實(shí)時(shí)在線預(yù)覽接口文檔,還實(shí)現(xiàn)了客戶端與服務(wù)器的分離,可以單獨(dú)處理每一個(gè)來(lái)自客戶端的請(qǐng)求,易于修復(fù)故障,降低了服務(wù)器資源的使用,減少了客戶端與服務(wù)器之間的交互次數(shù),還提高了可擴(kuò)展性。
本發(fā)明的其它特征和優(yōu)點(diǎn)將在隨后的說(shuō)明書(shū)中闡述,并且,部分地從說(shuō)明書(shū)中變得顯而易見(jiàn),或者通過(guò)實(shí)施本發(fā)明而得以體現(xiàn)。本發(fā)明的目的和其他優(yōu)點(diǎn)可通過(guò)在說(shuō)明書(shū)、權(quán)利要求書(shū)以及附圖中所特別指出的結(jié)構(gòu)來(lái)實(shí)現(xiàn)和獲得。
當(dāng)然,實(shí)施本發(fā)明的任一產(chǎn)品或方法并不一定需要同時(shí)達(dá)到以上所述的所有優(yōu)點(diǎn)。
附圖說(shuō)明
為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為根據(jù)本發(fā)明實(shí)施例的rset接口實(shí)現(xiàn)方法的流程示意圖;
圖2為根據(jù)本發(fā)明實(shí)施例的構(gòu)建rest接口的流程示意圖;
圖3為根據(jù)本發(fā)明實(shí)施例的rset接口實(shí)現(xiàn)裝置的結(jié)構(gòu)示意圖;
圖4為根據(jù)本發(fā)明實(shí)施例的第二確定模塊的結(jié)構(gòu)示意圖;
圖5為根據(jù)本發(fā)明實(shí)施例的電子設(shè)備的結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
術(shù)語(yǔ)說(shuō)明
接口是指通過(guò)一個(gè)鏈接進(jìn)入另一個(gè)應(yīng)用的模塊,也是計(jì)算機(jī)系統(tǒng)中各個(gè)子模塊或子系統(tǒng)之間交互并相互作用的部分。
rset(resourcerepresentationalstatetransfer,資源表現(xiàn)形式狀態(tài)轉(zhuǎn)移)接口用于客戶端與服務(wù)器之間交互的接口,是構(gòu)建api時(shí)需要遵守的一種規(guī)則。其中,資源是指數(shù)據(jù);表現(xiàn)形式可以是json、xml、jpeg等;狀態(tài)轉(zhuǎn)移可以通過(guò)http來(lái)實(shí)現(xiàn)。rest接口通過(guò)http協(xié)議、url(統(tǒng)一資源定位符)和參數(shù),利用客戶端/服務(wù)器模式來(lái)訪問(wèn)某個(gè)服務(wù),完成一些列業(yè)務(wù)請(qǐng)求,進(jìn)行增加、讀取、更新、刪除等操作。rest接口可以為不同的平臺(tái)(例如:安卓平臺(tái)、蘋(píng)果平臺(tái))提供服務(wù)。另外,對(duì)于微博、微信等不需要顯式前端的平臺(tái),rest接口也可以為其提供服務(wù)。
前端是指為發(fā)送請(qǐng)求目的而建立連接的應(yīng)用程序。例如app(應(yīng)用程序)或網(wǎng)站。其中,該app包括頁(yè)面。
后臺(tái),也稱后端,是指接受連接并為發(fā)送請(qǐng)求返回信息的應(yīng)用程序。例如:數(shù)據(jù)庫(kù)。
上述前端與上述后臺(tái)是相對(duì)而言的,它們也可以相互轉(zhuǎn)換。上述前端與上述后臺(tái)可以通過(guò)套接字來(lái)建立連接。
框架是指開(kāi)發(fā)app時(shí),與請(qǐng)求處理和響應(yīng)處理有關(guān)的架構(gòu)。
其中,架構(gòu)是指app開(kāi)發(fā)中涉及到的各種技術(shù)所擁有的各種資源的組織形式,例如:文件、數(shù)據(jù)庫(kù)、http(超文本傳輸協(xié)議)請(qǐng)求等。
框架可以由計(jì)算裝置予以實(shí)現(xiàn)。該計(jì)算裝置可以包括:各種用于傳輸信息的物理部件和/或邏輯部件,它們可以根據(jù)一組給定的設(shè)計(jì)參數(shù)或者性能制約的要求,由硬件部件(例如:處理器、可編程邏輯控制器)、可被各種硬件部件執(zhí)行的可執(zhí)行計(jì)算機(jī)程序指令(例如:固件、軟件)或者它們的任意組合予以實(shí)現(xiàn)。上述計(jì)算裝置可以包括但不限于個(gè)人計(jì)算機(jī)(例如:臺(tái)式計(jì)算機(jī)、膝上型計(jì)算機(jī)、筆記本型計(jì)算機(jī))、智能手機(jī)、個(gè)人數(shù)字助理(pda)、媒體播放器或任何其他適合的通信裝置。
框架可以由萬(wàn)維網(wǎng)瀏覽器運(yùn)行并予以實(shí)現(xiàn)。其中,萬(wàn)維網(wǎng)瀏覽器可以由諸如ie、firefox(火狐)、opera(歐朋)或者任意適合的、臺(tái)式機(jī)版本或移動(dòng)版本的萬(wàn)維網(wǎng)瀏覽器予以實(shí)現(xiàn)。該萬(wàn)維網(wǎng)瀏覽器可以支持框架所要求的計(jì)算機(jī)編程語(yǔ)言、標(biāo)準(zhǔn)、萬(wàn)維網(wǎng)協(xié)議和/或技術(shù)。這些計(jì)算機(jī)編程語(yǔ)言、標(biāo)準(zhǔn)、萬(wàn)維網(wǎng)協(xié)議和/或技術(shù)包括但不限于html(超文本標(biāo)記語(yǔ)言)、xml(可擴(kuò)展標(biāo)記語(yǔ)言)、ajax(阿賈克斯)、flash(動(dòng)畫(huà))、css(層疊樣式表)或者其他適當(dāng)?shù)木幊陶Z(yǔ)言、腳本語(yǔ)言或基于vm(虛擬機(jī))的語(yǔ)言。萬(wàn)維網(wǎng)瀏覽器可以提供用戶接口的基礎(chǔ),并且可以包括:用于諸如js(一種萬(wàn)維網(wǎng)編程腳本語(yǔ)言)、vb(可視化初始者通用符號(hào)指令代碼語(yǔ)言)和/或其他腳本編程語(yǔ)言的語(yǔ)言解釋程序。其中,解釋程序?qū)崟r(shí)解釋基于瀏覽器的腳本、字節(jié)碼集或者語(yǔ)言。
命名空間是指封裝事物的方法,具體而言,其可以是將相關(guān)的類、函數(shù)和常量組合到一起的途徑。
在接口開(kāi)發(fā)應(yīng)用中,當(dāng)前端與后臺(tái)的開(kāi)發(fā)人員對(duì)接口不熟悉時(shí),尤其是對(duì)接口規(guī)范、接口文檔等方面不熟悉時(shí),在前端與后臺(tái)之間會(huì)造成溝通障礙。為此,本發(fā)明實(shí)施例提供一種rset接口實(shí)現(xiàn)方法。圖1示例性地示出了rset接口實(shí)現(xiàn)方法步驟的流程。如圖1所示,該方法可以通過(guò)步驟s100至步驟s120來(lái)實(shí)現(xiàn)。其中:
s100:獲取前端需求數(shù)據(jù)。
其中,前端需求數(shù)據(jù)與app對(duì)外部所要展現(xiàn)的資源相關(guān)。
s110:基于前端需求數(shù)據(jù),確定接口調(diào)用參數(shù)和接口返回值。
其中,接口調(diào)用參數(shù)可由前端通過(guò)http(超文本傳輸協(xié)議)方法來(lái)調(diào)用接口。接口調(diào)用參數(shù)可以是接收類型、用戶名等,其可以根據(jù)實(shí)際情況進(jìn)行定義。接口調(diào)用參數(shù)的數(shù)據(jù)類型可以是字符串、整型等,但絕不限于此。接口返回值由接口反饋至前端。接口返回值可以為任意類型的數(shù)據(jù)。
舉例來(lái)說(shuō),接口返回值以為0或1,其中,可以定義0表示操作失敗,1表示操作成功;接口返回值也可以為1001、1002、1003等,其中,可以定義1001表示參數(shù)錯(cuò)誤,1002表示用戶名不存在,1003表示沒(méi)有可推送的目標(biāo)。
優(yōu)選地,考慮到前端與后臺(tái)之間交互的流暢性,可以采用固定的數(shù)據(jù)格式來(lái)封裝接口返回值。
s120:基于接口調(diào)用參數(shù)和接口返回值,按照rest規(guī)范來(lái)確定前端與后臺(tái)之間的交互操作,從而實(shí)現(xiàn)rest接口。
其中,rest規(guī)范定義了構(gòu)建接口的方式。例如:(1)在url中使用名詞來(lái)指定資源;該資源可以是網(wǎng)絡(luò)上的任意一個(gè)實(shí)體或信息,例如,一段文本、一首歌曲、一張圖片等;(2)通過(guò)http協(xié)議中動(dòng)詞來(lái)實(shí)現(xiàn)資源狀態(tài)的轉(zhuǎn)移;(3)使用某種表現(xiàn)形式在客戶端與服務(wù)器之間傳遞資源,且服務(wù)器的狀態(tài)信息通過(guò)http狀態(tài)代碼來(lái)傳遞;(4)來(lái)自客戶端的每個(gè)請(qǐng)求中要包含服務(wù)器所需要的所有信息;(5)服務(wù)器返回的信息必須標(biāo)記是否可以緩存;(6)對(duì)數(shù)據(jù)的select(獲取)、creat(創(chuàng)建)、delect(刪除)和update(更新)操作分別對(duì)應(yīng)于http方法中的get(獲取)、post(提交)、delete(刪除)和put(更新)操作,以完成對(duì)數(shù)據(jù)的增刪改查操作。其中,url包括協(xié)議名稱、宿主名和目錄以及文件名。
上述rest規(guī)范將網(wǎng)絡(luò)上的所有事物都視為資源。每一個(gè)資源對(duì)應(yīng)一個(gè)唯一的資源定位符。通過(guò)通用的連接器接口對(duì)資源進(jìn)行操作,而且各種操作是無(wú)狀態(tài)的并不改變資源定位符。也就是說(shuō),所有的資源都通過(guò)相同的接口進(jìn)行資源訪問(wèn)。其中,無(wú)狀態(tài)是指某個(gè)操作不依賴于其他資源的操作。
本發(fā)明實(shí)施例通過(guò)采取上述技術(shù)方案,由于采用rest規(guī)范來(lái)實(shí)現(xiàn)接口,所以,可以將rest規(guī)范作為接口函數(shù)注釋的模板,從而可以按照接口注釋生成接口文檔。該接口文檔對(duì)于前端與后臺(tái)來(lái)說(shuō)都是熟悉的,易于理解。因此,如果前端通過(guò)ajax(阿賈克斯,一種異步加載和局部刷新技術(shù))來(lái)調(diào)用rest接口時(shí),則可以便于前端與后臺(tái)之間的溝通;而且,可以實(shí)時(shí)在線預(yù)覽接口文檔,還實(shí)現(xiàn)了客戶端與服務(wù)器的分離,可以單獨(dú)處理每一個(gè)來(lái)自客戶端的請(qǐng)求,易于修復(fù)故障,降低了服務(wù)器資源的使用,減少了客戶端與服務(wù)器之間的交互次數(shù),還提高了可擴(kuò)展性。
在一些可選的實(shí)施例中,步驟s120具體可以包括:基于接口調(diào)用參數(shù)和接口返回值、超文本預(yù)處理器thinkphp框架及其命名空間方式,并按照rest規(guī)范來(lái)構(gòu)建實(shí)現(xiàn)前端與后臺(tái)之間的交互操作的rest接口。
其中,thinkphp框架是基于mvc(model-view-controller,模型-視圖-控制器)和面向?qū)ο蟮膒hp(超文本預(yù)處理語(yǔ)言)開(kāi)發(fā)框架。thinkphp框架可以包括完整的應(yīng)用目錄結(jié)構(gòu)和入口文件,且基于模塊和操作的方式進(jìn)行訪問(wèn),并采用單一入口文件來(lái)執(zhí)行應(yīng)用。其中,入口文件的訪問(wèn)由url的參數(shù)來(lái)統(tǒng)一解析和調(diào)度。與用戶http請(qǐng)求相關(guān)的api需求數(shù)據(jù)通過(guò)入口文件生成應(yīng)用實(shí)例。通過(guò)瀏覽器可以訪問(wèn)該入口文件。thinkphp框架可以應(yīng)用于基于b/s(瀏覽器/服務(wù)器)、c/s(客戶端/服務(wù)器)結(jié)構(gòu)的環(huán)境中,并基于http協(xié)議進(jìn)行開(kāi)發(fā)管理。
在thinkphp框架中使用rest方法,需要對(duì)請(qǐng)求類型和資源類型進(jìn)行判斷。因此,在rest操作方法中,可以使用$this->type方法獲取當(dāng)前訪問(wèn)的資源類型,用$this->method方法獲取當(dāng)前的請(qǐng)求類型。此外,還可以通過(guò)以下方式自動(dòng)調(diào)用restful操作方法:操作名_提交類型_資源后綴、操作名_資源后綴、操作名_提交類型。其中,操作名例如可以為讀、寫(xiě)等。提交類型例如可以為get類型、post類型等。資源后綴例如可以為pdf。
本實(shí)施例通過(guò)命名空間可以定義和加載類庫(kù)文件。因此,通過(guò)命名空間可以在實(shí)現(xiàn)rest接口時(shí)避免所定義的名稱與php內(nèi)部的類/函數(shù)/常量或第三方類/函數(shù)/常量之間的沖突,從而可以提高rest接口代碼的可讀性。
在具體實(shí)現(xiàn)過(guò)程中,可以通過(guò)非限定名稱或不含前綴的類名稱、限定名稱或含前綴的名稱、包含了全局前綴操作符的名稱等方式來(lái)使用命名空間中元素。
以文件名為foo為例,文件路徑為foo::staticmethod()為例,假設(shè)命名空間為:currentnamespace。如果通過(guò)非限定名稱來(lái)使用命名空間中的元素,則foo將被解析為currentnamespace\foo,其表示使用命名空間currentnamespace中的文件foo;如果文件路徑為subnamespace\foo::staticmethod(),通過(guò)限定名稱來(lái)使用命名空間中的元素,則foo會(huì)被解析為currentnamespace\subnamespace\foo;如果文件路徑為\currentnamespace\foo::staticmethod(),則foo總是被解析為代碼中的文字名currentnamespace\foo。
本發(fā)明實(shí)施例通過(guò)采取上述技術(shù)方案,由于將thinkphp框架與rest規(guī)范相結(jié)合來(lái)實(shí)現(xiàn)接口,從而實(shí)現(xiàn)了將thinkphp框架所具備的自動(dòng)驗(yàn)證、緩存機(jī)制、項(xiàng)目編譯、路由功能等特點(diǎn)與rest規(guī)范的統(tǒng)一接口、使用標(biāo)準(zhǔn)的http方法來(lái)操作資源等特點(diǎn)相結(jié)合。這樣,可以將thinkphp框架的規(guī)范與rest規(guī)范作為接口函數(shù)注釋的模板,從而可以按照接口注釋生成接口文檔,而且,該接口文檔可以支持增刪改查和搜索功能,還能實(shí)時(shí)在線預(yù)覽。接口文檔可以包括:使用場(chǎng)景、請(qǐng)求方式、版本號(hào)、請(qǐng)求參數(shù)和返回?cái)?shù)據(jù)等。通過(guò)接口文檔,可以了解該接口所實(shí)現(xiàn)的功能。這樣,該接口文檔對(duì)于前端與后臺(tái)來(lái)說(shuō)都是熟悉的,便于理解。因此,本實(shí)施例方便地實(shí)現(xiàn)了前端與后臺(tái)之間的實(shí)時(shí)溝通;而且,可以實(shí)時(shí)在線預(yù)覽接口文檔,還實(shí)現(xiàn)了客戶端與服務(wù)器的分離,可以單獨(dú)處理每一個(gè)來(lái)自客戶端的請(qǐng)求,易于修復(fù)故障,降低了服務(wù)器資源的使用,減少了客戶端與服務(wù)器之間的交互次數(shù),還提高了可擴(kuò)展性。
在一些可選的實(shí)施例中,thinkphp框架可以包括rest控制器;如圖2所示,基于接口調(diào)用參數(shù)和接口返回值、thinkphp框架及其命名空間方式,并按照rest規(guī)范來(lái)構(gòu)建rest接口的步驟進(jìn)一步可以包括:
s200:基于接口調(diào)用參數(shù)和接口返回值以及thinkphp框架,構(gòu)建接口訪問(wèn)控制器。
其中,thinkphp框架中的控制器及其操作可以通過(guò)url的參數(shù)來(lái)訪問(wèn)和執(zhí)行。thinkphp框架也視為基于控制器的web框架(萬(wàn)維網(wǎng)框架)。
本實(shí)施例中,訪問(wèn)控制器可以利用thinkphp框架,由命名空間來(lái)定義。然后,將接口調(diào)用參數(shù)和接口返回值配置在訪問(wèn)控制器中。
s201:將接口訪問(wèn)控制器繼承rest控制器,得到第一控制器。
其中,作為可替換的實(shí)施方式,rest控制器也可以為資源控制器。
通過(guò)繼承rest控制器,接口訪問(wèn)控制器可以獲得rest控制器的特性。例如:接口訪問(wèn)控制器可以支持資源類型自動(dòng)檢測(cè)和請(qǐng)求類型自動(dòng)檢測(cè)以及rest操作方法,并還可以允許設(shè)置請(qǐng)求類型列表、請(qǐng)求和輸出的資源類型和默認(rèn)請(qǐng)求類型和默認(rèn)資源類型。
s202:在第一控制器中,按照rest規(guī)范來(lái)定義rest屬性參數(shù)和rest路由,得到第二控制器;其中,rest屬性參數(shù)和rest路由用于實(shí)現(xiàn)rest接口的操作。
其中,rest屬性參數(shù)用于確定rest允許的請(qǐng)求類型列表、請(qǐng)求類型、允許請(qǐng)求的資源類型列表、資源類型、允許輸出的資源類型列表等。通過(guò)rest路由的定義可以將rest操作方法與某個(gè)請(qǐng)求類型和資源類型綁定在一起。rest路由可以通過(guò)thinkphp框架中的路由參數(shù)來(lái)定義。
在具體描述rest操作過(guò)程中,使用http方法來(lái)描述操作,也就是將rest操作中的select(獲取)、creat(創(chuàng)建)、delect(刪除)和update(更新)操作分別對(duì)應(yīng)于http方法中的get(獲取)、post(提交)、delete(刪除)和put(更新)操作進(jìn)行實(shí)現(xiàn)。
作為示例,http請(qǐng)求消息的格式為:請(qǐng)求消息=請(qǐng)求行實(shí)體內(nèi)容。其中,請(qǐng)求行=方法請(qǐng)求urlhttp版本號(hào)實(shí)體內(nèi)容。其中,方法包括get方法、post方法、head方法等。由此,如果進(jìn)行如下定義:get/users,則表示列出所有用戶的操作。再比如,如果進(jìn)行如下定義:post/users,則表示插入一個(gè)新用戶的操作。在具體實(shí)施過(guò)程中,可以將這些操作定義在控制器中。
s203:將api功能單元封裝在命名空間中;其中,api功能單元與前端需求數(shù)據(jù)相對(duì)應(yīng)。
其中,api功能單元例如可以是驗(yàn)證模塊、接口基類、文檔自動(dòng)生成模塊等,但絕不限于此。
命名空間可以包含類、接口、函數(shù)和常量等。所以,可以將驗(yàn)證模塊、接口基類、文檔自動(dòng)生成等函數(shù)封裝在命名空間中。
以類為例,在thinkphp框架中,給類庫(kù)定義所在的命名空間,并且該命名空間的路徑與類庫(kù)文件的目錄一致,那么就可以實(shí)現(xiàn)類的自動(dòng)加載。
s204:將封裝有api功能單元的命名空間配置在第二控制器中,得到第三控制器,并將承載第三控制器的thinkphp框架,確定為rset接口。
本發(fā)明實(shí)施例通過(guò)采取上述技術(shù)方案,由于將thinkphp框架與rest規(guī)范相結(jié)合來(lái)實(shí)現(xiàn)接口。由此將thinkphp框架所具備的自動(dòng)驗(yàn)證、緩存機(jī)制、項(xiàng)目編譯、路由功能等特點(diǎn)與rest規(guī)范的統(tǒng)一接口、使用標(biāo)準(zhǔn)的http方法來(lái)操作資源等特點(diǎn)相結(jié)合。這樣,可以將thinkphp框架所定義的規(guī)范和rest規(guī)范作為接口函數(shù)注釋的模板,從而可以按照接口注釋生成接口文檔,而且,該接口文檔可以支持增刪改查和搜索功能,還能實(shí)時(shí)在線預(yù)覽。接口文檔可以包括:使用場(chǎng)景、請(qǐng)求方式、版本號(hào)、請(qǐng)求參數(shù)和返回?cái)?shù)據(jù)等。通過(guò)接口文檔,可以了解該接口所實(shí)現(xiàn)的功能。這樣,接口文檔對(duì)于前端與后臺(tái)來(lái)說(shuō)都是熟悉的,易于理解。因此,本實(shí)施例方便地實(shí)現(xiàn)了前端與后臺(tái)之間的實(shí)時(shí)溝通。另外,本實(shí)施例由于采用rest規(guī)范,還實(shí)現(xiàn)了客戶端與服務(wù)器的分離,可以單獨(dú)處理每一個(gè)來(lái)自客戶端的請(qǐng)求,易于修復(fù)故障,降低了服務(wù)器資源的使用,減少了客戶端與服務(wù)器之間的交互次數(shù),還提高了可擴(kuò)展性。
為了解決如何便于前端與后臺(tái)溝通的技術(shù)問(wèn)題,基于與上述方法實(shí)施例相同的技術(shù)構(gòu)思,本發(fā)明實(shí)施例還提供一種資源表現(xiàn)形式狀態(tài)轉(zhuǎn)移rset接口實(shí)現(xiàn)裝置。該rset接口實(shí)現(xiàn)裝置實(shí)施例可以執(zhí)行上述rset接口實(shí)現(xiàn)方法實(shí)施例。該rest接口可以用于連接前端與后臺(tái)。如圖3所示,該rset接口實(shí)現(xiàn)裝置可以包括:獲取模塊32、第一確定模塊34和第二確定模塊36。其中,獲取模塊32用于獲取前端需求數(shù)據(jù)。第一確定模塊34用于基于前端需求數(shù)據(jù),確定接口調(diào)用參數(shù)和接口返回值。第二確定模塊36用于基于接口調(diào)用參數(shù)和接口返回值,按照rest規(guī)范來(lái)確定前端與后臺(tái)之間的交互操作,從而實(shí)現(xiàn)rest接口。
本實(shí)施例中,由于第二確定模塊36采用rest規(guī)范并與獲取模塊32、第一確定模塊34協(xié)同作用來(lái)實(shí)現(xiàn)rest接口,所以,可以將rest規(guī)范作為接口函數(shù)注釋的模板,從而可以按照接口注釋生成接口文檔。該接口文檔對(duì)于前端與后臺(tái)來(lái)說(shuō)都是熟悉的,易于理解。因此,如果前端通過(guò)ajax(阿賈克斯,一種異步加載和局部刷新技術(shù))來(lái)調(diào)用本發(fā)明實(shí)施例所實(shí)現(xiàn)的rest接口時(shí),則可以便于前端與后臺(tái)之間的溝通;而且,可以實(shí)時(shí)在線預(yù)覽接口文檔,本發(fā)明實(shí)施例rset接口實(shí)現(xiàn)裝置所實(shí)現(xiàn)的rest接口實(shí)現(xiàn)了客戶端與服務(wù)器的分離,可以單獨(dú)處理每一個(gè)來(lái)自客戶端的請(qǐng)求,易于修復(fù)故障,降低了服務(wù)器資源的使用,減少了客戶端與服務(wù)器之間的交互次數(shù),還提高了可擴(kuò)展性。
在一些可選的實(shí)施例中,第二確定模塊具體可以用于:基于接口調(diào)用參數(shù)和接口返回值、超文本預(yù)處理器thinkphp框架及其命名空間方式,并按照rest規(guī)范,構(gòu)建實(shí)現(xiàn)前端與后臺(tái)之間的交互操作的rest接口。
在一些可選的實(shí)施例中,thinkphp框架包括rest控制器;如圖4所示,第二確定模塊具體可以包括:構(gòu)建單元41、繼承單元42、定義單元43、封裝單元44和配置單元45。其中,構(gòu)建單元41用于基于接口調(diào)用參數(shù)和接口返回值以及thinkphp框架,構(gòu)建接口訪問(wèn)控制器。繼承單元42用于將接口訪問(wèn)控制器繼承rest控制器,得到第一控制器。定義單元43用于在第一控制器中,按照rest規(guī)范來(lái)定義rest屬性參數(shù)和rest路由,得到第二控制器;其中,rest屬性參數(shù)和rest路由用于實(shí)現(xiàn)rest接口的操作。封裝單元44用于將api功能單元封裝在命名空間中;其中,api功能單元與前端需求數(shù)據(jù)相對(duì)應(yīng)。配置單元45用于將封裝有api功能單元的命名空間配置在第二控制器中,得到第三控制器,并將承載第三控制器的thinkphp框架,確定為rset接口。
本實(shí)施例中,由于構(gòu)建單元41、繼承單元42、定義單元43、封裝單元44和配置單元45將thinkphp框架與rest規(guī)范相結(jié)合來(lái)實(shí)現(xiàn)接口。由此將thinkphp框架所具備的自動(dòng)驗(yàn)證、緩存機(jī)制、項(xiàng)目編譯、路由功能等特點(diǎn)與rest規(guī)范的統(tǒng)一接口、使用標(biāo)準(zhǔn)的http方法來(lái)操作資源等特點(diǎn)相結(jié)合。這樣,可以將thinkphp框架所定義的規(guī)范和rest規(guī)范作為接口函數(shù)注釋的模板,從而可以按照接口注釋生成接口文檔,而且,該接口文檔可以支持增刪改查和搜索功能,還能實(shí)時(shí)在線預(yù)覽。接口文檔可以包括:使用場(chǎng)景、請(qǐng)求方式、版本號(hào)、請(qǐng)求參數(shù)和返回?cái)?shù)據(jù)等。通過(guò)接口文檔,可以了解該接口所實(shí)現(xiàn)的功能。這樣,接口文檔對(duì)于前端與后臺(tái)來(lái)說(shuō)都是熟悉的,易于理解。因此,本實(shí)施例方便地實(shí)現(xiàn)了前端與后臺(tái)之間的實(shí)時(shí)溝通。另外,本實(shí)施例由于采用rest規(guī)范,還實(shí)現(xiàn)了客戶端與服務(wù)器的分離,可以單獨(dú)處理每一個(gè)來(lái)自客戶端的請(qǐng)求,易于修復(fù)故障,降低了服務(wù)器資源的使用,減少了客戶端與服務(wù)器之間的交互次數(shù),還提高了可擴(kuò)展性。
為了解決如何便于前端與后臺(tái)溝通的技術(shù)問(wèn)題,本發(fā)明實(shí)施例還提供一種電子設(shè)備。如圖5所示,該電子設(shè)備可以包括處理器51、通信接口52、存儲(chǔ)器53和通信總線54,其中,處理器51、通信接口52和存儲(chǔ)器53通過(guò)通信總線54完成相互間的通信;存儲(chǔ)器53用于存放計(jì)算機(jī)程序。處理器51用于執(zhí)行存儲(chǔ)器53上所存放的程序時(shí),實(shí)現(xiàn)上述方法實(shí)施例中的方法步驟。
上述電子設(shè)備提到的通信總線可以是外設(shè)部件互連標(biāo)準(zhǔn)(peripheralcomponentinterconnect,pci)總線或擴(kuò)展工業(yè)標(biāo)準(zhǔn)結(jié)構(gòu)(extendedindustrystandardarchitecture,eisa)總線等。該通信總線可以分為地址總線、數(shù)據(jù)總線、控制總線等。為便于表示,圖5中僅用一條粗線表示,但并不表示僅有一根總線或一種類型的總線。
通信接口用于上述電子設(shè)備與其他設(shè)備之間的通信。
存儲(chǔ)器可以包括隨機(jī)存取存儲(chǔ)器(randomaccessmemory,ram),也可以包括非易失性存儲(chǔ)器(non-volatilememory,nvm),例如至少一個(gè)磁盤(pán)存儲(chǔ)器??蛇x的,存儲(chǔ)器還可以是至少一個(gè)位于遠(yuǎn)離前述處理器的存儲(chǔ)裝置。
上述的處理器可以是通用處理器,包括中央處理器(centralprocessingunit,簡(jiǎn)稱cpu)、網(wǎng)絡(luò)處理器(networkprocessor,np)等;還可以是數(shù)字信號(hào)處理器(digitalsignalprocessing,dsp)、專用集成電路(applicationspecificintegratedcircuit,asic)、現(xiàn)場(chǎng)可編程門(mén)陣列(field-programmablegatearray,fpga)或者其他可編程邏輯器件、分立門(mén)或者晶體管邏輯器件、分立硬件組件。
為了解決如何便于前端與后臺(tái)溝通的技術(shù)問(wèn)題,本發(fā)明實(shí)施例還提供一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其特征在于,計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)內(nèi)存儲(chǔ)有計(jì)算機(jī)程序,計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)上述方法實(shí)施例中的方法步驟。
上述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)包括但不限于隨機(jī)存取存儲(chǔ)器(ram)、動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(dram)、靜態(tài)隨機(jī)存取存儲(chǔ)器(sram)、只讀存儲(chǔ)器(rom)、可編程只讀存儲(chǔ)器(prom)、可擦寫(xiě)可編程只讀存儲(chǔ)器(eprom)、電可擦寫(xiě)可編程只讀存儲(chǔ)器(eeprom)、閃存(例如,nor型閃存或nand型閃存)、內(nèi)容可尋址存儲(chǔ)器(cam)、聚合物存儲(chǔ)器(例如,鐵電聚合物存儲(chǔ)器)、相變存儲(chǔ)器、雙向開(kāi)關(guān)半導(dǎo)體存儲(chǔ)器、硅-氧化物-氮化硅-氧化硅-硅(silicon-oxide-nitride-oxide-silicon,sonos)存儲(chǔ)器、磁卡或者光卡,亦或是其他任意適當(dāng)類型的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。
需要說(shuō)明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語(yǔ)僅僅用來(lái)將一個(gè)實(shí)體或者操作與另一個(gè)實(shí)體或操作區(qū)分開(kāi)來(lái),而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語(yǔ)“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過(guò)程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒(méi)有明確列出的其他要素,或者是還包括為這種過(guò)程、方法、物品或者設(shè)備所固有的要素。在沒(méi)有更多限制的情況下,由語(yǔ)句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的過(guò)程、方法、物品或者設(shè)備中還存在另外的相同要素。
本說(shuō)明書(shū)中的各個(gè)實(shí)施例均采用相關(guān)的方式描述,各個(gè)實(shí)施例之間相同相似的部分互相參見(jiàn)即可,每個(gè)實(shí)施例重點(diǎn)說(shuō)明的都是與其他實(shí)施例的不同之處。尤其,對(duì)于系統(tǒng)實(shí)施例而言,由于其基本相似于方法實(shí)施例,所以描述的比較簡(jiǎn)單,相關(guān)之處參見(jiàn)方法實(shí)施例的部分說(shuō)明即可。
以上所述僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范圍。凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換、改進(jìn)等,均包含在本發(fā)明的保護(hù)范圍內(nèi)。