所以,我正在构建一个API架构,我对程序员实现API端点输出的方式感到震惊。
问题在于可以有不同的方式来存储我要输出的响应,并且不知道是否值得创建一个接口并迫使开发人员只使用一种方式。
第一种情况,使用类属性。
我们有一个控制器,它根据资源'user'进行许多操作,然后在响应处理函数中返回形成的响应:
class LogInController implements ResponseInterface{
private $user;
private function setUser(){...};
private function checkThatToTheUser();{...}
function LogInEndpoint(){
$this->setUser();
$this->checkThatToTheUser();
return $this->handledResponse();
}
/**implemented function that doesn't
take parameters as it has access
to the class property that has the response formed*/
function handledResponse(){
$response = [
'user_id' => $this->user->id
];
return $this->APIResponse($response);
};
}
第二种情况,直接调用响应管理器。
我们有一个控制器只能输出数据库中的一些数据,在这种情况下,数据库可以是集合或集合的集合。
class UserController{
function get(){
$users = User::paginate(20);
return $this->APIReponse($users);
}
function getByID($id){
$user = User::find($id);
return $this->APIReponse($user);
}
}
第三种情况,我们将所有响应生成封装在一个函数上但没有属性。
在这种情况下,我们将instanciated用户传递给响应处理程序。
class UserActionsController{
private function get(){
$user = User::find(1);
return $user
}
private function getComplexThings($user){
...
return $user;
}
function getComplextDataEndpoint(){
$user = $this->get();
$user = $this->getComplexThings($user);
return $this->handledResponse($user);
}
function handledResponse($user){
...
return $this->APIResponse($user);
}
}
我应该让它打开并让程序员在实现的时刻选择或强制实现它的方式(属性,参数,直接输出,响应处理程序下的输出......)。