【问题标题】:Controller Endpoint Naming Convention控制器端点命名约定
【发布时间】:2020-11-14 06:09:08
【问题描述】:

我有一个控制器端点,我需要命名约定方面的帮助。

基本上,端点应该通过他们的 ID/电子邮件(在请求的 url 中发送)找到客户。因此我需要有两个端点,一个用于users/{id},一个用于users/{email}

问题是,上述方法行不通,因为路线完全相同。

我所做的是将users/{email} 路由替换为:

users/get-by-email/{email} 并将 get by id 路由保持为:users/{id}

谢谢

【问题讨论】:

    标签: java c# .net controller routes


    【解决方案1】:

    您似乎正在创建某种 REST API 来与存储的数据进行交互。在 REST 中,您正在处理的信息称为资源。你有users 资源和emails 资源。我的建议是你可以有一个users/{id} 端点和emails/{email} 端点,这将返回必要的信息。此外,您还可以使用users/{id}/emails,它将返回特定用户的电子邮件地址等。明智地命名端点的目的是为了清晰和不言自明。

    最深入的讨论:Fielding, R. Representational State Transfer (REST)

    【讨论】:

    • 但是 emails 是 users 对象的属性,id 也是,不是吗?如果是这种情况,您将拥有: id/{id} 和 email/{email}
    • @AmirAli 电子邮件也可以是一个对象,包含用户名、id、地址等值。就命名约定而言,端点在我的回答中更像是get-by-email样式类型。
    • 我同意你的看法。我决定将端点更改为:user/{id} user/email/{email}
    • @AmirAli 这听起来也很合理。正如我所说,目标是清晰和一致,因为端点名称以后可能很难更改。干杯!
    • 完美,非常感谢。我已将您的答案标记为正确和赞成。 =) 祝你有美好的一天
    猜你喜欢
    • 2016-02-04
    • 1970-01-01
    • 1970-01-01
    • 2012-04-24
    • 2021-05-25
    • 2021-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多