Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php LaravelAPI控制器结构?_Php_Rest_Laravel_Laravel 4 - Fatal编程技术网

Php LaravelAPI控制器结构?

Php LaravelAPI控制器结构?,php,rest,laravel,laravel-4,Php,Rest,Laravel,Laravel 4,用户api的这种控制器结构有什么意义 每个API版本的UI和API的独立控制器 /app/controllers/UsersController.php /app/controllers/api/v1/ApiUsersController.php 或 为UI和API分离控制器,并在代码中处理版本控制 /app/controllers/UsersController.php /app/controllers/api/ApiUsersController.php 或 使用单个控制器,在路由器内

用户api的这种控制器结构有什么意义

每个API版本的UI和API的独立控制器

/app/controllers/UsersController.php
/app/controllers/api/v1/ApiUsersController.php

为UI和API分离控制器,并在代码中处理版本控制

/app/controllers/UsersController.php
/app/controllers/api/ApiUsersController.php 

使用单个控制器,在路由器内检测/api/调用。根据url返回html/json。

/app/controllers/UsersController.php  

个人意见。我喜欢第一种选择。“一应俱全”应用程序,并通过名称空间进行版本控制。

第一个选项肯定是三个选项中最好的,原因是可伸缩性和维护性

如果像第三种方法中建议的那样,只使用一个控制器,那么很快就会得到一个包含数千行的混乱类。这不仅不能很好地扩展,而且对你和你的队友来说,很难合作

第二个选择比第三个好,但仍然不是最好的。从一开始就支持API版本控制是一种更好的做法,它将使路由、文件和名称空间更加有序


顺便说一下,您也可以使用
UserController
来代替将其命名为
ApiUserController
,只要名称空间正确。因此,您可以同时拥有
\UserController
Api\V1\UserController

第一个选项是明确和直接的。如果你向公众开放你的API,最后一个最终会让人困惑。Manuel,你能解释一下为什么要使用不同的控制器来输出JSON或HTML吗。对于我来说,使用同一个控制器,只使用不同的返回语句是完全违反规则的。我一定没有考虑什么。你的意思是Web/API对应的方法迟早会变得比我所知道的更重吗?我可以想象,这只是因为如果你的API控制器中有一个返回json的方法,例如索引,但是,如果您希望一个带有索引的web控制器返回一个vew,那么尝试用逻辑将请求分离为需要json的请求就不会变得混乱,只需要使用明确分离的控制器来处理每件事情。保持代码的完整性。