Standardize response codes.

Lumen already has built in response codes, using them will make the code less error prone.
This commit is contained in:
AsafMah 2015-10-08 14:34:06 +03:00
parent 381c16c833
commit f954b5481e

View File

@ -1,24 +1,15 @@
<?php namespace App\Http\Controllers; <?php namespace App\Http\Controllers;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Http\Response;
trait RESTActions { trait RESTActions {
protected $statusCodes = [
'done' => 200,
'created' => 201,
'removed' => 204,
'not_valid' => 400,
'not_found' => 404,
'conflict' => 409,
'permissions' => 401
];
public function all() public function all()
{ {
$m = self::MODEL; $m = self::MODEL;
return $this->respond('done', $m::all()); return $this->respond(Response::HTTP_OK, $m::all());
} }
public function get($id) public function get($id)
@ -26,16 +17,16 @@ trait RESTActions {
$m = self::MODEL; $m = self::MODEL;
$model = $m::find($id); $model = $m::find($id);
if(is_null($model)){ if(is_null($model)){
return $this->respond('not_found'); return $this->respond(Response::HTTP_NOT_FOUND);
} }
return $this->respond('done', $model); return $this->respond(Response::HTTP_OK, $model);
} }
public function add(Request $request) public function add(Request $request)
{ {
$m = self::MODEL; $m = self::MODEL;
$this->validate($request, $m::$rules); $this->validate($request, $m::$rules);
return $this->respond('created', $m::create($request->all())); return $this->respond(Response::HTTP_CREATED, $m::create($request->all()));
} }
public function put(Request $request, $id) public function put(Request $request, $id)
@ -44,25 +35,25 @@ trait RESTActions {
$this->validate($request, $m::$rules); $this->validate($request, $m::$rules);
$model = $m::find($id); $model = $m::find($id);
if(is_null($model)){ if(is_null($model)){
return $this->respond('not_found'); return $this->respond(Response::HTTP_NOT_FOUND);
} }
$model->update($request->all()); $model->update($request->all());
return $this->respond('done', $model); return $this->respond(Response::HTTP_OK, $model);
} }
public function remove($id) public function remove($id)
{ {
$m = self::MODEL; $m = self::MODEL;
if(is_null($m::find($id))){ if(is_null($m::find($id))){
return $this->respond('not_found'); return $this->respond(Response::HTTP_NOT_FOUND);
} }
$m::destroy($id); $m::destroy($id);
return $this->respond('removed'); return $this->respond(Response::HTTP_NO_CONTENT);
} }
protected function respond($status, $data = []) protected function respond($status, $data = [])
{ {
return response()->json($data, $this->statusCodes[$status]); return response()->json($data, $status);
} }
} }