2014-04-15 64 views
2

我寫在API設計一些錯構瘤,我有以下代碼:有沒有辦法在RAML中標記方法的結束?

/users: 
    /{id}: 
    /tags: 
    description: Personal tags of a user 
    get: 
     description: A list of the user's personal tags 
     responses: 
     200: 
      body: 
      application/json: 
       example: | 
       { 
        tags: [ 
        {...}, 
        ... 
        ] 
       } 

     /{slug}: 
     description: A personal tag 
     put: 

解析器在/{slug}拋出一個錯誤,因爲它認爲我試圖把它作爲一個的屬性get:方法。但是,/{slug}需要縮進以使其從屬於/tags

在RAML(或YAML,因爲RAML應該是YAML的一個實例)中有一種方法來標記地圖的結束嗎?或者你有其他建議嗎?

+0

現在,我使用'/ tags/{slug}'作爲'/ tags'的縮進級別,但這看起來不正確 – Dancrumb

回答

3

RAML不支持(AFAIK)顯式終止映射,但我們也不需要這樣來解決您的問題:-)。

由於在YAML中空白是語義的,所發生的事情是您的GET方法當前縮進,因此它是/ users/{id}級別的方法,所以即使它看起來像/ {slug}從屬於標籤,它認爲它在/ users/{id}的定義中真的,我們應該在這裏拋出一個錯誤,因爲方法定義是在你定義了一個子資源之後出現的(感謝你找到這種情況)。

爲了解決這個問題,你需要做的就是縮進你的描述,併爲/ users/{id} /標籤定義一個額外的級別,並且它應該全部解析得很好。下面是更新的RAML。

/users: 
    /{id}: 
    /tags: 
     description: Personal tags of a user 
     get: 
     description: A list of the user's personal tags 
     responses: 
      200: 
      body: 
       application/json: 
       example: | 
        { 
        tags: [ 
         {...}, 
         ... 
        ] 
        } 
     /{slug}: 
     description: A personal tag 
     put: 
相關問題