【发布时间】:2016-10-10 14:17:42
【问题描述】:
现状
我正在使用 PHP 开发一个在线订单管理系统应用程序,我需要通过 URL 方案设计 REST 资源映射。
我有典型的资源:
- 客户(有订单)
- 订单(有票)
- 票证(有消息)
- 留言
我在想这样的事情:
-
客户资料:
example.com/customers/{customer-ID} -
{customer-ID} 的订单:
example.com/customers/{customer-ID}/orders -
{order-ID} 的门票:
example.com/customers/{customer-ID}/orders/{order-ID}/tickets -
{ticket-ID} 的消息
example.com/customers/{customer-ID}/orders/{order-ID}/tickets/{ticket-ID}/messages
调查结果
在谷歌上搜索了一天,我找到了这些引用:
-
用户名后面的命名空间功能,如
example.com/{username}/followers对于属于每个用户的公共功能是很好的解决方案。
诸如帐户设置之类的私人内容不应在用户名后面进行命名空间,而应仅出现在
/account或/settings之后。最好使基本资源 URL 尽可能精简。 过滤器、排序要求、高级搜索和分页都可以实现为查询参数.
查询字符串应被视为页面的可选添加;该 URL 应该能够生成有效且有用的页面,即使它已被删除。
在一个良好的可破解网址中,人类可以调整或删除部分路径并从您的网站获得预期的结果。它们可以让您的访问者更好地了解您的网页,并使他们能够轻松地向上移动。
通过在您的路径中尽早嵌入唯一 ID,您可以在需要时拥有完整的长网址,但仍然可以享受较短网址的可靠性和 ID 查找速度。
向 URL 添加多个关键字可能有助于 SEO,但它会使您的用户感到困惑。此外,您很快就会面临被标记为关键字垃圾邮件发送者的风险。
问题
- 我做错了吗?
- 我应该避免命名customers、orders、tickets和messages吗?
- 它有什么真正的重大安全问题吗?
提前致谢!
【问题讨论】:
标签: php rest url url-rewriting url-routing