0

对于作为资源的内部标识符(如person_id)的系统,提供可在不同唯一值(如 )上调用的直接 API 访问是否有意义licensee_id

那么有这样的 API 设计合理吗?

GET /people/{:licensee_id}

和:

PUT /people/{:licensee_id}
{
    "name": "John"
}
4

2 回答 2

2

这意味着您正在谈论的资源没有唯一标识符,但它有两个。

如果我这样做,我会从两个不同的 URL 公开相同的资源,如下所示:

/licensee/:licensee_id
/people/:person_id

因此,如果您的 API 的一部分代码中的用户正在与人打交道(即person_id无需任何其他调用即可轻松访问)调用第二个,否则他可以调用第一个。

除了 API 的使用者更容易这一事实之外,其中一个原因是它更容易实现,您不必了解传递给您的内容是 alicensee_id还是 aperson_id

于 2013-05-10T16:34:24.333 回答
0

这样做是有道理的。您并没有真正放弃任何重要信息,这些信息会使某人进行 SQL 注入攻击变得不那么困难(因为其他表中引用 id 的所有外键无论如何都会有不同的名称)。

如果不直接访问 id 字段,则需要使用从唯一用户字段创建的 uuid 或 md5 等索引的不同列。我认为这样做的唯一好处是有人将无法使用 API 来“走”用户或其他对象。

于 2013-05-10T16:35:15.893 回答