很多框架都使用 URL 约定/controller/action/{id}
,这很好,但是如果您需要除此之外的任何配置,则由您自己编写路由。
您将如何处理/users/{id}/friends
后端的 URL?(列出用户的所有朋友)
我认为在控制器中,这样的事情是合适的:
class User {
function index() {
echo 'user index';
}
}
class Friend extends User {
function index($user_id) {
echo 'friend index';
}
}
然后你会得到以下地图:
/users -> User::index()
/users/{id} -> User::view($id)
/users/{id}/friends -> Friend::index($user_id)
我想把 Friend 类放在 User 类中,但显然你不能在 PHP 中这样做,所以这是我能想到的最好的方法。想法?
什么 URL 将用于编辑您的朋友列表?/users/{id}/friends/edit
可以工作,但它似乎不合适,因为你永远不应该编辑别人的朋友列表。会/account/friends/edit
是更好的选择吗?你会把相应的代码放在哪里?在朋友控制器、用户控制器或专用帐户控制器中?
额外的问题:你更喜欢哪个?/photos/delete/{id}
或者/photos/{id}/delete
答案:
所以,我从答案中收集到的是,如果“事物”很复杂(如“朋友”)但没有自己的控制器,你可以给它一个没有模型的控制器,或者如果不是,你应该将与它最密切相关的东西塞进去。您的 URL 不应影响您放置代码的位置。大多数人似乎认为你应该尽可能坚持/controller/action/{id}
,因为这是人们所熟悉的。
除了说它“尴尬”之外,没有人真正评论扩展课程。如果我真的想把它分开,也许 FriendList 在这种情况下会是一个更合适的类。
感谢所有的答案 :)