在同一资源RAML

时间:2015-09-29 13:52:04

标签: oauth raml

我意识到标题可能有点令人困惑,所以这就是我想要实现的目标:

我需要使用RAML记录token_grant和token_refresh方法,两者都是POST调用。

token_grant :首次生成OAuth令牌 token_refresh :刷新访问令牌

它们的查询参数不同,当然还有不同的返回结果。问题是它们都在相同的资源下,并且RAML只允许每个资源进行1次POST调用:

 /oauth/token

有没有办法可以解决这个问题,仅限于一次通话? 也许根据查询参数有条件的东西?

以下是 token_grant

的模板
/oauth/token:  
   post:
     description:
     headers:
       Authorization:
         type: "string"
         default: "[client_id:]"
         required: true
         example: 
     queryParameters:
       grant_type:
         type: string
         required: true
         example: ''
       code:
         type: string
         required: true
         example: ''
     responses:
       200:
         body:
         application/json:
       example: |

以下是 token_refresh 的模板:

/oauth/token:  
   post:
     description:
     headers:
       Authorization:
         type: "string"
         default: "[client_id:]"
         required: true
         example: 
     queryParameters:
       grant_type:
         type: string
         required: true
         example: ''
       //Main difference1
       refresh_token:
         type: string
         required: true
         example: ''
     responses:
       200:
         body:
          application/json:
          //Main difference 2
          example: "a different response goes here"

所以主要问题是如何将这些放在一起

/oauth/token/

感谢任何帮助 非常感谢!

1 个答案:

答案 0 :(得分:1)

您无需在RAML中指定OAuth2协议,因为默认情况下支持此安全方案:https://github.com/raml-org/raml-spec/blob/master/raml-0.8.md#security

您需要定义的只是URI,授权和范围:https://github.com/raml-org/raml-spec/blob/master/raml-0.8.md#oauth-20以及您期望访问令牌的标头:https://github.com/raml-org/raml-spec/blob/master/raml-0.8.md#declaration-1

任何支持OAuth2的客户端都会有足够的信息来使用您的API,因为OAuth2规范本身描述了代码/令牌资源交互。