我刚开始使用Apiary,我无法分辨这是产品的限制还是只是我不理解要做什么。Apiary的多种身份验证方法
我正在记录一个API,它将用户认证为每个请求的一部分。有时,身份验证是路径的一部分(对用户配置文件的请求会在路径中包含用户标识),其他时间只是参数(?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中为我期望:
但这导致2个问题:
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组合即可。
谢谢!
我明白了,这很有道理。根据您所说的参数获得不同的资源会很奇怪,因此我认为您在底部提供的示例是现在就开始实施的最佳方式。我不认为我们是唯一拥有多个指向相同资源的URI,如果他们将来支持(不会像您所说的那样破坏服务器),那将会很好。 – JMRboosties
那么你可以使用[资源模型](https://github.com/apiaryio/api-blueprint/blob/master/examples/8.%20Resource%20Model.md),但它与使用情况略有不同你所描述的(一个模型在那里,而你实际上有一些稍微不同的模型)。 – Almad