0

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

我正在记录一个 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 组合会很好。

谢谢!

4

1 回答 1

1

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

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

在我看来,我会将其分为三个模型:和Facebook User,文档略有不同(它们是如何创建的?你真的可以通过 api 创建所有这些模型吗?等等等等)E-mail UserDevice User

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

## 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.

至于可重用部分,目前正在实施,其中身份验证是其中的一部分

于 2014-03-25T19:16:30.690 回答