我刚刚开始使用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中显示:
但这引入了两个问题:
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>
谢谢!
答案 0 :(得分:1)
首先,没有真正支持具有多个资源表示的单个模型。这是一件不寻常的事情,实际上是很好的思考。
其次,在[path segment]
中使用多个URI可能会混淆Apiary的模拟服务器并使其无法使用。
在我看来,我将其拆分为三个模型:Facebook User
,E-mail User
和Device 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。