10 Guide REST API With Lumen (cloudways.com) (web Page)
User Manual:
Open the PDF directly: View PDF .
Page Count: 9
Download | |
Open PDF In Browser | View PDF |
Setup Laravel 5.7 Application in Just 1-click on Different Cloud Providers Like GCE , AWS , DO , Linode , Vultr Features Pricing Enterprise Partnership Company How to Create a REST API with Laravel Lumen Updated on November 3, 2016 4 Min Read API LARAVEL Search L umen is a micro-framework built on top of Laravel. The framework is ideal for small apps and services that are optimized for speed. The most important application of the framework is to build REST APIs. Why build a REST API in Lumen Lumen is blazing fast. It can handle more requests per second than Laravel. It uses nikic/FastRoute instead of Symfony, thereby increasing performance. To build a REST API with Lumen, signup to launch a server on Cloudways Laravel hosting. On Cloudways platform, you get Laravel in a 1-click install with an optimized stack and pre-installed Composer. Support DEPLOY NOW! Login START FREE You might also like: Quickly Host Laravel on DigitalOcean in Few Clicks Note: If you want to use the Laravel Stack Inside the Laravel public_html directory, run the following commands to create a Lumen app inside the Laravel project : > composer require "laravel/lumen" //installing Lumen > vendor/bin/lumen n ew mylumen_car_app //creating Lumen app 1. 2. > composer require "laravel/lumen" //installing Lumen > vendor/bin/lumen new mylumen_car_app //creating Lumen app > composer require "laravel/lumen" //installing Lumen > vendor/bin/lumen new mylumen_car_app //creating Lumen app From here you have 3 options to update the webroot: Symlink your Lumen public directory to the Laravel public directory. OR update the webroot using the Cloudways Application Settings page. OR move Lumen’s index.php inside the Laravel public directory and update the bootstapp/app.php path. Next, inside the app’s public_html folder, run the following command to create a Lumen project. > composer create‐project laravel/lumen car_api 1. > composer create-project laravel/lumen car_api > composer create-project laravel/lumen car_api Change the webroot by adding /public (this is the public folder for all Laravel apps) in the Cloudways Application Settings page so that the new webroot is now public_html/public. Load up the application URL in the browser and you will see the following page. MySQL connection I will use MySQL for this tutorial. Update the DB credentials in the . e n v file using the 117 SHARES MySQL ACCESS available on the Cloudways Application Page. The following fields should be updated: DB_DATABASE=DB_USERNAME= DB_PASSWORD= 1. DB_DATABASE= 2. DB_USERNAME= DB_PASSWORD= 3. DB_DATABASE= DB_USERNAME= DB_PASSWORD= Next, uncomment the following lines in bootstrap/app.php $app‐>withFacades(); $app‐>withEloquent(); 1. $app->withFacades(); 2. $app->withEloquent(); $app->withFacades(); $app->withEloquent(); The Facade class is a static interface to classes available in the application’s service containers. This class is required to access certain core components of Lumen. Eloquent is the ORM that is used communicate with the MySQL database. Migration It is now time to create the database schema. Create a table for Cars with four fields including the auto- increment i d. The other three fields are make, model, and y e a r. To create the table, run: > php artisan make:migration create_table_cars ‐‐create=cars 1. > php artisan make:migration create_table_cars --create=cars > php artisan make:migration create_table_cars --create=cars This will create a _create_table_cars.php file inside the database/migrations/ folder. I will now edit this file and define the table. Add the following code inside u p function: Schema::create('cars', function (Blueprint $table) { $table‐>increments('id '); $table‐>string('make'); $table‐>string('model'); $table‐>string('year') ; }); 1. Schema::create('cars', function (Blueprint $table) { $table->increments('id'); $table->string('make'); 2. 3. $table->string('model'); $table->string('year'); 4. 5. 6. }); Schema::create('cars', function (Blueprint $table) { $table->increments('id' ); $table->string('make'); $table->string('model'); $table->string('year'); }); The u p function will be triggered when the table is actually created during the migration. The down function (no changes required in this function) will delete the table if the need arises. Now run the migration using: > php artisan migrate Migration table created successfully. Migrated: 2016_ 09_08_142212_create_table_cars 1. > php artisan migrate 2. Migration table created successfully. 3. Migrated: 2016_09_08_142212_create_table_cars > php artisan migrate Migration table created successfully. Migrated: 2016_0 9_08_142212_create_table_cars At this point, the table has been created and can be viewed in MySQL manager. The Model Next step is the creation of the model. Create the app/Car.php file and add the following code: 1. The Controller Create a controller inside the app/Http/Controllers/CarController.php. all()); return response()‐>json($car); } public function updateCar(Re quest $request, $id){ $car = Car::find($id); $car‐>make = $request‐>input(' make'); $car‐>model = $request‐>input('model'); $car‐>year = $request‐>inpu t('year'); $car‐>save(); return response()‐>json($car); } public function d eleteCar($id){ $car = Car::find($id); $car‐>delete(); return response()‐>js on('Removed successfully.'); } public function index(){ $cars = Car::all() return response()‐>json($cars); } } ?> 1. all()); 13. 14. return response()->json($car); 15. 16. 17. } 18. 19. public function updateCar(Request $request, $id){ 20. 21. $car 22. $car->make = $request->input('make'); = Car::find($id); 23. $car->model = $request->input('model'); 24. $car->year = $request->input('year'); 25. $car->save(); 26. return response()->json($car); 27. 28. } 29. 30. 31. public function deleteCar($id){ $car = Car::find($id); $car->delete(); 32. 33. return response()->json('Removed successfully.'); 34. 35. } 36. 37. 38. public function index(){ $cars 39. = Car::all(); 40. return response()->json($cars); 41. 42. } 43. 44. } 45. ?> all()); return response()->json($car); } public function updateCar(Reques t $request, $id){ $car = Car::find($id); $car->make = $request->input('make' ); $car->model = $request->input('model'); $car->year = $request->input('yea r'); $car->save(); return response()->json($car); } public function deleteCa r($id){ $car = Car::find($id); $car->delete(); return response()->json('Remo ved successfully.'); } public function index(){ $cars = Car::all(); return r esponse()->json($cars); } } ?> The routes Now all that remains is the addition of the routes. I will write routes for creating, updating, deleting and viewing cars. Open up app/Http/routes.php and add the following routes. $app‐>group(['prefix' => 'api/v1','namespace' => 'App\Http\Controllers'], f unction($app) { $app‐>post('car','CarController@createCar'); $app‐>put('car /{id}','CarController@updateCar'); $app‐>delete('car/{id}','CarController@d eleteCar'); $app‐>get('car','CarController@index'); }); 1. $app->group(['prefix' => 'api/v1','namespace' => 'App\Http\Controllers'], function($app) 2. { 3. $app->post('car','CarController@createCar'); 4. 5. $app->put('car/{id}','CarController@updateCar'); 6. 7. $app->delete('car/{id}','CarController@deleteCar'); 8. 9. 10. $app->get('car','CarController@index'); }); $app->group(['prefix' => 'api/v1','namespace' => 'App\Http\Controllers'], fu nction($app) { $app->post('car','CarController@createCar'); $app->put('car/{ id}','CarController@updateCar'); $app->delete('car/{id}','CarController@dele teCar'); $app->get('car','CarController@index'); }); Notice that I have grouped the routes together into a common api/v1 route. Testing It Out Now, test it all out using c u r l. Creation > curl ‐i ‐X POST ‐H "Content‐Type:application/json" http:// .cloudwaysapps.com/api/v1/car ‐d '{"make":"toyota", "model":"camry", "year" :"2016"}' {"make":"toyota","model":"camry","year":"2016","id":7} 1. > curl -i -X POST -H "Content-Type:application/json" http:// .cloudwaysapps.com/api/v1/car -d '{"make":"toyota", "model":"camry", "year":"2016"}' 2. 3. {"make":"toyota","model":"camry","year":"2016","id":7} > curl -i -X POST -H "Content-Type:application/json" http:// . cloudwaysapps.com/api/v1/car -d '{"make":"toyota", "model":"camry", "year":" 2016"}' {"make":"toyota","model":"camry","year":"2016","id":7} After adding several more records, the DB would look like: Updating Next,I will update id = 1 to Toyota Supra 1999 (the previous valve was Toyota Camry 2016). > curl ‐H "Content‐Type:application/json" ‐X PUT http:// .clo udwaysapps.com/api/v1/car/1 ‐d '{"make":"toyota", "model":"supra", "year":" 1999"}' {"id":1,"make":"toyota","model":"supra","year":"1999"} 1. > curl -H "Content-Type:application/json" -X PUT http:// .cloudwaysapps.com/api/v1/car/1 -d '{"make":"toyota", "model":"supra", "year":"1999"}' 2. 3. {"id":1,"make":"toyota","model":"supra","year":"1999"} > curl -H "Content-Type:application/json" -X PUT http:// .clou dwaysapps.com/api/v1/car/1 -d '{"make":"toyota", "model":"supra", "year":"19 99"}' {"id":1,"make":"toyota","model":"supra","year":"1999"} Deletion Now, I will delete id = 1. > curl ‐X DELETE http:// .cloudwaysapps.com/api/v1/car/1 1. > curl -X DELETE http:// .cloudwaysapps.com/api/v1/car/1 > curl -X DELETE http:// .cloudwaysapps.com/api/v1/car/1 “Removed successfully.” View This is what the final data should look like: > curl http:// .cloudwaysapps.com/api/v1/car [{"id":4,"make": "chevrolet","model":"camaro","year":"1969"},{"id":5,"make":"dodge","model": "intrepid","year":"2004"},{"id":6,"make":"acura","model":"integra","year":" 1999"}] 1. > curl http:// .cloudwaysapps.com/api/v1/car 2. 3. [{"id":4,"make":"chevrolet","model":"camaro","year":"1969"}, {"id":5,"make":"dodge","model":"intrepid","year":"2004"}, {"id":6,"make":"acura","model":"integra","year":"1999"}] > curl http:// .cloudwaysapps.com/api/v1/car [{"id":4,"make":" chevrolet","model":"camaro","year":"1969"},{"id":5,"make":"dodge","model":"i ntrepid","year":"2004"},{"id":6,"make":"acura","model":"integra","year":"199 9"}] As a final confirmation,I can verify the data using the Cloudways MySQL manager: You might also like: Create ToDo App With Authentication Using Lumen Conclusion This article highlighted Lumen, a Laravel based micro framework that is optimized for REST API. I created the model, controller and the view for the CURL based app. The aim of this tutorial is to show how easy it is to create REST API with Lumen. If you have any problems following the code or would like to contribute to the discussion, please leave a comment below. Share your opinion in the comment section. COMMENT NOW Fahad Saleh Fahad Saleh is a DevOps Engineer at Cloudways Get Connected on: Twitter Community Forum PRODUCT & SOLUTION COMPANY SUPPORT QUICK LINKS WordPress Hosting WooCommerce Hosting About us Knowledge base Features Magento Hosting Cloudways Platform Testimonials Contact us Pricing PHP Cloud Hosting Cloudways API Terms Blog Partners Laravel Hosting Breeze – Free WordPress CacheMedia Kit Community Cloud Affiliate Program Drupal Hosting Add-ons Feedback Joomla Hosting CloudwaysCDN Sitemap Free Website Migration PrestaShop Hosting CloudwaysBot Follow Us On 52 Springvale, Pope Pius XII Street Mosta MST2653, Malta © 2019 Cloudways Ltd. All rights reserved
Source Exif Data:
File Type : PDF File Type Extension : pdf MIME Type : application/pdf PDF Version : 1.4 Linearized : No Modify Date : 2019:05:06 21:01:22+03:00 Page Count : 9 Page Layout : OneColumn Format : application/pdf Creator : Description : Title : Creator Tool : Create Date : Keywords : Producer : Encryptomatic PdfExport Page Mode : UseAttachmentsEXIF Metadata provided by EXIF.tools