我刚刚开始使用Apiary,我不知道这是产品的限制还是我不知道该做什么。
我正在记录一个API,它作为每个请求的一部分对用户进行身份验证。有时,身份验证是路径的一部分(对用户配置文件的请求将用户id包含在路径中),其他时候只是作为参数(?user_id=1&auth=secret),而对于POST请求,传入体的一部分是JSON。
此外,在应用程序中有3种身份验证方法。您可以使用Facebook、电子邮件地址或使用所使用设备的唯一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的操作,并让它从某个定义的模板中提取唯一的id/auth组合框。
谢谢!
发布于 2014-03-25 19:16:30
首先,没有真正支持具有多个资源表示的单个模型。这是一件不寻常的事情,而且实际上是很好的思想食粮。
其次,在[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.https://stackoverflow.com/questions/22643869
复制相似问题