I want to create a API for a website developed using laravel. API is used to obtain data to a android application.I am new to API concept.So I am stuck at the moment. I don't know where to start. Can anyone guide me in the correct direction?
defining routes changes depending on the version of Laravel.
In Laravel 5.3 we can define api in a separate api.php
file instead of the routes.php
file.
I can say a few basic points which will help for REST API.
Authentication :
You can use auth_token in your backend (database) and on successful login update the auth token and in every api request you should pass the auth token. This will match with the auth token in the backend if it is same then we will let the user to get data response.
Route:
It is same as we are defining routes in laravel routes.php file. But it is good to prefix it like this.
Route::group(['prefix' => 'api/v1'], function()
{
Route::post('authenticate', 'APIV1Controller@authenticate');
}
Using this you can group the routes and it is good to maintain versions ( v1 ) so that we can update api by maintaining different versions like v2.
REST API CLIENT:
You can use postman or the REST API Client addon for Firefox to hit the API.
Headers:
To hit the API we need to specify headers. To pass JSON request, the header should be
Content-Type: application/json
Always have status_code and message in your api response. The response should be return in JSON Format.
Simple Example :
routes.php
Route::group(['prefix' => 'api/v1'], function()
{
Route::post('getUserData', 'APIV1Controller@getUserData');
}
APIV1Controller.php
public function getUserData(Request $request){
$user = User::select('name','phone')
->where('email','=',$request['email'])->first();
if($user){
return response()->json(['statusCode' => '200','message' => 'User Found','userDetails'=>$user]);
}
else{
return response()->json(['statusCode' => '400','message' => 'User Not Found']);
}
}
In Postman:
URL : www.example.com/api/v1/getUserData
Headers: Content-Type: application/json
Request : {"email":"mytest@test.com"}
Hit the api and you will get the response.
Response :
{"statusCode":"200","message":"User Found","userDetails":{"name":"Ganesh","phone":"1525353535"}}