Apiary的多种身份验证方法

时间:2014-03-25 18:57:50

标签: apiblueprint apiary.io

我刚刚开始使用Apiary,我无法判断这是产品的限制,还是我不知道该怎么做。

我记录了一个API,该API在每个请求中对用户进行身份验证。有时,身份验证是路径的一部分(对用户的配置文件的请求将在路径中具有用户ID),有时仅作为参数(?user_id = 1& auth = secret),对于POST请求,作为JSON的传入身体的一部分。

此外,应用程序中有3种身份验证方法。您可以使用Facebook UID,电子邮件地址或使用您正在使用的设备的唯一ID登录。结果是这样的:

##User [/user/{facebook_uid}{?access_token}, /user/{email}{?device_id}, /users/{device_auth_id}{?device_id}]

这很好用,并且我希望在API中显示:

enter image description here

但这引入了两个问题:

1)如果我想添加一组由所有身份验证方法共享的参数,我需要将它添加到所有3个,如下所示:

## User [/user/{facebook_uid}{?access_token, extra_thing, this_too}, 
/user/{email}{?device_id, extra_thing, this_too}, 
/users/{device_auth_id}{?device_id, extra_thing, this_too}]

这看起来有点混乱,在路径数组末尾应用共享参数要好得多,所以它们适用于所有类似的东西,如下所示:

## User [/user/{facebook_uid}{?access_token}, /user/{email}{?device_id}, /users/{device_auth_id}{?device_id}]{&extra_thing, this_too}

但这不起作用。有没有办法做到这一点?对于像这样的更复杂的东西,文档并没有多大帮助。

此外,是否有办法创建某种模板,我可以应用于我的所有方法?在认证是路径的一部分的情况下,它有点不可避免,但对于其他请求,只需执行类似include: authentication的操作并让它从某个定义的模板中拉出unique_id / auth组合就好了。 / p>

谢谢!

1 个答案:

答案 0 :(得分:1)

首先,没有真正支持具有多个资源表示的单个模型。这是一件不寻常的事情,实际上是很好的思考。

其次,在[path segment]中使用多个URI可能会混淆Apiary的模拟服务器并使其无法使用。

在我看来,我将其拆分为三个模型:Facebook UserE-mail UserDevice User,文档稍有不同(它们是如何创建的?你真的可以创建全部他们通过api?等等。)

这还取决于您希望如何记录这一点。由于路径段未经过验证(根据参数的类型设置不同的资源会很奇怪),您可以(我个人会这样做)

## User [/user/{id}{?access_token, extra_thing, this_too}]

+ Parameters
    + id (required, string, `test@example.com`)...id of the user. Can be either user's e-mail, facebook id or device id from where user was created.

对于可重复使用的部分,这是currently being implemented,其身份验证为being part of that