كود سلسلة دروس resful api
الكود الخاص ب PostsController
والكود الخاص ب ApiResponseTrait
الذي تم برمجته في سلسله دروس resful api
<?php namespace App\Http\Controllers\Api; use Illuminate\Support\Facades\Validator; trait ApiResponseTrait{ public $paginateNumber = 10; /* * [ * 'data' => * 'status' => true , false * 'error' => '' * ] */ public function apiResponse($data = null , $error = null , $code = 200){ $array = [ 'data' => $data, 'status' => in_array($code , $this->successCode()) ? true : false, 'error' => $error ]; return response($array , $code); } public function successCode(){ return [ 200 , 201 , 202 ]; } public function createdResponse($data){ return $this->apiResponse($data, null, 201); } public function deleteResponse(){ return $this->apiResponse(true, null, 200); } public function notFoundResponse(){ return $this->apiResponse(null, 'not found !', 404); } public function unKnowError(){ return $this->apiResponse(null, 'Un know error', 520); } public function apiValidation($request, $array){ $validate = Validator::make($request->all() , $array); if($validate->fails()){ return $this->apiResponse(null, $validate->errors(), 422); } } } ////// post controller <?php namespace App\Http\Controllers\Api; use App\Http\Controllers\Controller; use App\Http\Resources\PostResource; use App\Post; use Illuminate\Http\Request; use Illuminate\Http\Response; class PostsController extends Controller { use ApiResponseTrait; public function index() { $posts = PostResource::collection(Post::paginate($this->paginateNumber)); return $this->apiResponse($posts); } public function show($id) { $post = Post::find($id); if ($post) { return $this->returnSuccessPost($post); } return $this->notFoundResponse(); } public function delete($id) { $post = Post::find($id); if ($post) { $post->delete(); return $this->deleteResponse(); } return $this->notFoundResponse(); } public function store(Request $request) { $validation = $this->validation($request); if($validation instanceof Response){ return $validation; } $post = Post::create($request->all()); if ($post) { return $this->createdResponse(new PostResource($post)); } $this->unKnowError(); } public function update($id , Request $request){ $validation = $this->validation($request); if($validation instanceof Response){ return $validation; } $post = Post::find($id); if (!$post) { return $this->notFoundResponse(); } $post->update($request->all()); if ($post) { return $this->returnSuccessPost($post); } $this->unKnowError(); } public function validation($request){ return $this->apiValidation($request , [ 'title' => 'required|min:3|max:191', 'body' => 'required|min:10', ]); } public function returnSuccessPost($post){ return $this->apiResponse(new PostResource($post)); } }
لا يوجد تعليقات حتي الان