http://wiki.jikexueyuan.com/project/fend_note/images/A/api_design_overview.png" alt="" />
用戶(hù)使用 Web 客戶(hù)端訪問(wèn) Web 系統(tǒng),系統(tǒng)在收到請(qǐng)求后執(zhí)行操作 (收集數(shù)據(jù)模型,選擇數(shù)據(jù)經(jīng)行組裝),將結(jié)果返回給客戶(hù)。
其中包括的元素和關(guān)系如下圖所示:
http://wiki.jikexueyuan.com/project/fend_note/images/A/api_elements.png" alt="" />
約定
http://wiki.jikexueyuan.com/project/fend_note/images/A/api_rule.png" alt="" />
http://wiki.jikexueyuan.com/project/fend_note/images/A/api_rule_detail.png" alt="" />
每個(gè)規(guī)范也會(huì)對(duì)應(yīng)若干規(guī)定若干規(guī)則約定來(lái)指導(dǎo)前后端工程師的具體實(shí)施。
http://wiki.jikexueyuan.com/project/fend_note/images/A/api_page_entry.png" alt="" />
頁(yè)面入口規(guī)范(范例)
條目 | 詳情 |
---|---|
訪問(wèn)地址 | /dj/{id} |
頁(yè)面描述 | 節(jié)目詳情及推薦信息 |
輸入?yún)?shù) | 名稱(chēng):ID;類(lèi)型:Number;描述:節(jié)目標(biāo)示 |
異常跳轉(zhuǎn) | 異常:500;跳轉(zhuǎn)地址:/500/ |
模板列表 | 默認(rèn):/template/dj/dj.ftl |
過(guò)期:/template/dj/over.ftl |
|
未找到:/template/dj/404.ftl |
|
接口列表 | 歌曲列表:/api/dj/tracks/{id}/ |
相關(guān)節(jié)目:/api/dj/rec/{id}/ |
|
收藏節(jié)目:/api/dj/fav/{id}/ |
|
評(píng)論節(jié)目:/api/comments/{id} |
http://wiki.jikexueyuan.com/project/fend_note/images/T/template_normal_error.jpg" alt="" />
http://wiki.jikexueyuan.com/project/fend_note/images/A/api_data_sync.png" alt="" />
同步數(shù)據(jù)規(guī)范(范例)
條目 | 詳情 |
---|---|
模板文件 | /templates/dj/dj.ftl |
模板描述 | 節(jié)目詳情及推薦信息模板文件 |
預(yù)填信息 | {"名稱(chēng)":"user", "類(lèi)型":"User","描述":"登陸用戶(hù)信息"} |
{"名稱(chēng)":"dj", "類(lèi)型":"Program","描述":"節(jié)目信息"} |
|
{"名稱(chēng)":"other", "類(lèi)型":"String","描述":"其他信息"} |
|
注入接口 | jd.parser |
{"輸入":[["String", "節(jié)目信息"], ["Boolean", "是否格式化"]]} |
|
{"輸出":["Program", "節(jié)目對(duì)象"]} |
|
dj.api | |
dj.api2 |
http://wiki.jikexueyuan.com/project/fend_note/images/A/api_async.png" alt="" />
異步接口規(guī)范(范例)
條目 | 詳情 |
---|---|
請(qǐng)求方式 | GET POST |
接口地址 | api/dj/tracks/{id}/ |
接口描述 | 獲取指定節(jié)目的歌曲列表 |
輸入數(shù)據(jù) | {"名稱(chēng)":"id", "類(lèi)型":"Number","描述":"節(jié)目標(biāo)示"} |
{"名稱(chēng)":"offset", "類(lèi)型":"Number","描述":"節(jié)目起始位置"} |
|
{"名稱(chēng)":"limit", "類(lèi)型":"Number","描述":"列表數(shù)量"} |
|
輸出結(jié)果 | {"名稱(chēng)":" code", "類(lèi)型":"Number","描述":"請(qǐng)求結(jié)果標(biāo)示"} |
{"名稱(chēng)":"message", "類(lèi)型":"String","描述":"請(qǐng)求異常信息"} |
|
{"名稱(chēng)":"result", "類(lèi)型":"Array","描述":"歌曲列表"} |
通過(guò)模擬數(shù)據(jù)的形成,將前端本地開(kāi)發(fā)與后端獨(dú)立出來(lái), 這樣前端工程師就可以獨(dú)立的進(jìn)行本地的開(kāi)發(fā)工作。
http://wiki.jikexueyuan.com/project/fend_note/images/A/api-rule-apply.jpg" alt="" />
使用頁(yè)面入口規(guī)范制定項(xiàng)目結(jié)構(gòu)(配置信息,目錄結(jié)構(gòu)和模板結(jié)構(gòu)), 此過(guò)程可以使用自動(dòng)化工具自動(dòng)完成。
http://wiki.jikexueyuan.com/project/fend_note/images/A/api-rule-apply-1.jpg" alt="" />
根據(jù)同步數(shù)據(jù)規(guī)范可生成模擬數(shù)據(jù)的配置文件。(此部分通用可以使用自動(dòng)化工具來(lái)完成)
http://wiki.jikexueyuan.com/project/fend_note/images/A/api-apply-2.jpg" alt="" />
根據(jù)異步接口規(guī)范生成模擬異步數(shù)據(jù)。
http://wiki.jikexueyuan.com/project/fend_note/images/L/local-development.jpg" alt="" />
前端開(kāi)發(fā)環(huán)境包含兩個(gè)部分,本地模擬服務(wù)器和本地代理。
Local Server
http://wiki.jikexueyuan.com/project/fend_note/images/L/local-server-working.jpg" alt="" />
根據(jù)請(qǐng)求規(guī)則進(jìn)行匹配,然后生成(整合模板和模擬數(shù)據(jù))所請(qǐng)求的頁(yè)面
Local Proxy
http://wiki.jikexueyuan.com/project/fend_note/images/L/local-proxy-working.jpg" alt="" />
攔截異步請(qǐng)求后,根據(jù)請(qǐng)求的匹配規(guī)則返回所請(qǐng)求的數(shù)據(jù)(例如 JSON 或 XML)。
http://wiki.jikexueyuan.com/project/fend_note/images/L/local-and-remote.png" alt="" />
前后端聯(lián)調(diào)需要去除本地環(huán)境,在實(shí)際開(kāi)發(fā)中只需要對(duì)配置文件進(jìn)行調(diào)整既可 (控制哪些請(qǐng)求需要被本地服務(wù)器或代理攔截,哪些需要使用遠(yuǎn)程服務(wù)器)。