0

我有表日志.. 在那个表里面我有一些列,有 id_log、user_role、log、timestamp、timer

user_role 的类型是 enum('guest','admin','moderator')

我已经有 2 个 URI:

/logs (to represent all logs)

/logs/id-{number} (to represent logs with specific id_log)

我知道在 URI 设计中,/(斜杠)用于表示与前一段有层次关系的资源。

用特定用户角色表示日志的最佳格式是什么?

/logs/{role} (using role as hierarchy)

或者

/logs?roll={role} (using role as filter)

请给我一个建议

4

1 回答 1

0

在 REST 中,您需要分离出资源和参数。在您的情况下,正如您正确陈述的那样,资源是一个日志并标识一个实体,因此这应该构成 URL 的一部分。过滤日志不是定义您正在获取的资源的东西,因此应该是请求的参数。

考虑一下您的表中也有一个时间戳这一事实。如果用户想通过时间戳和滚动过滤特定日志,那么如果您试图将所有这些信息放在 URL 中,您最终会得到类似/logs/{id}/{roll}/{timestamp}或可能/logs/{id}/{timestamp}/{roll}的结果,但您已经在试图构建规范的过程中陷入困境没有明显层次结构的 URL。将此与 进行比较/logs/{id}?roll=x&timestamp=y,您可以非常清楚地尝试获取什么(单个日志)以及如何过滤它(通过滚动和时间戳)。这还允许您以各种方式更改查询参数,例如roll参数可能是!guest,而不会影响资源 URL。

顺便说一句,它的作用不是滚动,而是在上面的解释中坚持滚动以避免混淆。

于 2013-09-23T09:41:44.143 回答