RAML的學(xué)習(xí)之路(一)

RAML是什么呢?

下面這段話(huà)摘自于網(wǎng)絡(luò)

RAML的全稱(chēng)是RESTful API建模語(yǔ)言,這是一種基于YAML格式的新規(guī)范趁曼,因此機(jī)器與人類(lèi)都能夠輕易地理解其中的內(nèi)容。但RAML的目的不僅僅在于創(chuàng)建更易于理解的規(guī)范(你可以將這一工作指派給文檔團(tuán)隊(duì),他們會(huì)做得更好)而已。RAML的設(shè)計(jì)者Uri Sarid希望使用者能夠打破固有的思維最域,在開(kāi)始編寫(xiě)代碼之前以一種全新的方式對(duì)API進(jìn)行建模。

它的官網(wǎng)是:

http://raml.org/

雖然目前國(guó)內(nèi)沒(méi)有太多這方面的資料,國(guó)外也是不溫不火的,但是圍繞著raml已經(jīng)建立起了一個(gè)小的生態(tài),涵蓋了API的全部生命周期,從設(shè)計(jì)到構(gòu)建,從測(cè)試到文檔

raml是和具體開(kāi)發(fā)語(yǔ)言無(wú)關(guān)的,但是需要依賴(lài)具體的第三方工具來(lái)提供相應(yīng)的服務(wù),目前對(duì)于nodejs,python,java,php等語(yǔ)言均支持的不錯(cuò),本人以nodejs為例進(jìn)行學(xué)習(xí).

先看一下語(yǔ)法

#%RAML 0.8
title: Remote Medicine Example API
mediaType: application/json
/cases:
  description: The urgent cases created by the remote medicine partner
  get:
    description: Get a list of cases
    queryParameters:
      startFrom:
        type: number
        description: The number of the first question, where 0 means latest
        default: 0
      numberToReturn:
        type: number
        description: How many questions to return
        default: 5
    responses:
      200:
        body:
          example: |
            {
              "totalNumber": 3781,
              "cases":
              [
                {
                  "id": "c68732",
                  "overview": "The patient just collapsed",
                  "location": "Oro Valley",
                  "created": "Sat, 24 May 2014 23:18:01 GMT"
                },
                {
                  "id": "c98729",
                  "overview": "The patient felt severe headaches and saw flashes",
                  "location": "Picacho Peak",
                  "created": "Fri, 25 Apr 2014 04:34:00 GMT"
                }
              ]
            }

和yaml是不是很像?而且看起來(lái)很簡(jiǎn)單?

接下來(lái)介紹一下他的編輯器

  • API-wordkbench
  • API-Design

API-workbench是基于atom的插件,支持raml語(yǔ)法和實(shí)時(shí)預(yù)覽

http://apiworkbench.com/

API-Design是一個(gè)基于nodejs的web編輯器,需要自己部署服務(wù)端

https://github.com/mulesoft/api-designer

而我選擇了API-workbench

API-workbench

圖中為示例代碼,可以在下面的url中拿到

http://static-anypoint-mulesoft-com.s3.amazonaws.com/API_examples_notebooks/raml-design3.html

生成mock服務(wù)

這里用到的工具是Osprey Mock Service:

https://github.com/mulesoft-labs/osprey-mock-service

使用方法

npm install -g osprey-mock-service
osprey-mock-service -f api.raml -p 8000

這里api.raml是上一步中生成的raml文件
接下來(lái)訪(fǎng)問(wèn) http://localhost:8000/cases,就有模擬的輸出了

實(shí)現(xiàn)API

接下來(lái)本應(yīng)該是編碼實(shí)現(xiàn)的,但是為了快速感受raml的特點(diǎn),此步驟略過(guò),由mock服務(wù)代替

測(cè)試

測(cè)試用的工具有多重選擇,選擇了相對(duì)比較流行的Abao工具,工具可以在下面找到

https://github.com/cybertk/abao/

使用方法

npm install -g abao
abao api.yaml  --server http://localhost:8080

如果api.yaml中提供了baseUrl屬性的話(huà),也可以不指定--server屬性

微信截圖_20170211174744.png

免責(zé)聲明

本文為初次學(xué)習(xí)筆記,對(duì)于多處均略過(guò),如果有不對(duì)的地方,請(qǐng)留言指正.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末锈麸,一起剝皮案震驚了整個(gè)濱河市镀脂,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌忘伞,老刑警劉巖薄翅,帶你破解...
    沈念sama閱讀 216,372評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異氓奈,居然都是意外死亡翘魄,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)舀奶,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)暑竟,“玉大人,你說(shuō)我怎么就攤上這事伪节」庑撸” “怎么了绩鸣?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵怀大,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我呀闻,道長(zhǎng)化借,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任捡多,我火速辦了婚禮蓖康,結(jié)果婚禮上铐炫,老公的妹妹穿的比我還像新娘。我一直安慰自己蒜焊,他們只是感情好倒信,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著泳梆,像睡著了一般鳖悠。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上优妙,一...
    開(kāi)封第一講書(shū)人閱讀 51,125評(píng)論 1 297
  • 那天乘综,我揣著相機(jī)與錄音,去河邊找鬼套硼。 笑死卡辰,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的邪意。 我是一名探鬼主播九妈,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼抄罕!你這毒婦竟也來(lái)了允蚣?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤呆贿,失蹤者是張志新(化名)和其女友劉穎嚷兔,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體做入,經(jīng)...
    沈念sama閱讀 45,310評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡冒晰,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了竟块。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片壶运。...
    茶點(diǎn)故事閱讀 39,690評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖浪秘,靈堂內(nèi)的尸體忽然破棺而出蒋情,到底是詐尸還是另有隱情,我是刑警寧澤耸携,帶...
    沈念sama閱讀 35,411評(píng)論 5 343
  • 正文 年R本政府宣布棵癣,位于F島的核電站,受9級(jí)特大地震影響夺衍,放射性物質(zhì)發(fā)生泄漏狈谊。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評(píng)論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望河劝。 院中可真熱鬧壁榕,春花似錦、人聲如沸赎瞎。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)务甥。三九已至二庵,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間缓呛,已是汗流浹背催享。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留哟绊,地道東北人因妙。 一個(gè)月前我還...
    沈念sama閱讀 47,693評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像票髓,于是被迫代替她去往敵國(guó)和親攀涵。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容