Site icon Bệ Phóng Việt

Xây dựng RESTful Web Service API với Laravel

Advertisements

Các bước thực hiện

Để tạo một RESTful web service sử dụng Laravel, bạn có thể sử dụng các bước sau:

  1. Tạo một model và một controller bằng cách sử dụng lệnh php artisan make:model ModelName -mc.
  2. Trong model, khai báo các validation rules cho các trường dữ liệu.
  3. Trong controller, viết các action để xử lý các yêu cầu HTTP do front-end gọi. Các kết quả của API trả về sẽ ở dạng json

RESTful web service – một vài ví dụ

Trong ví dụ này, bạn sẽ thấy cách tạo RESTful web service api cho việc tạo, xoá, sửa, cập nhật một bài viết (Article)

Xây dựng model Article:

Chạy lệnh tạo mode:

php artisan make:model Article -mc

Sau đó sử dụng đoạn code sau để định nghĩa model và các cột của bảng liên quan

<?php 
namespace App; 
use Illuminate\Database\Eloquent\Model; 
class Article extends Model { 
  protected $fillable = ['title', 'body']; 
  public static $rules = [
    'title' => 'required|unique:articles', 
    'body' => 'required', 
  ]; 
}

Xây dựng Controller:

Trước hết chạy lệnh tạo controller:

php artisan make:controller ArticleController
Tiếp đó update code của Controller như sau:

<?php 
namespace App\Http\Controllers; 
use Illuminate\Http\Request; 
use App\Article; 
class ArticleController extends Controller { 
    public function index() { 
        $articles = Article::all(); return $articles; 
    }

    public function store(Request $request) {
        $validation = Validator::make($request->all(), Article::$rules);
        if ($validation->fails()) {
            return response()->json($validation->errors(), 422);
        }

        $article = Article::create($request->all());
        return response()->json($article, 201);
    }

    public function show(Article $article)
    {
        return $article;
    }

    public function update(Request $request, Article $article)
    {
        $validation = Validator::make($request->all(), Article::$rules);
        if ($validation->fails()) {
            return response()->json($validation->errors(), 422);
        }

        $article->update($request->all());
        return response()->json($article, 200);
    }

    public function destroy(Article $article)
    {
        $article->delete();
        return response()->json(null, 204);
    }
}

Khai báo route của các action trong controller

Để cập nhật route cho các action trong ArticleController, bạn có thể sử dụng các bước sau:

  1. Mở file routes/web.php và thêm các route cho các action trong ArticleController.
  2. Sử dụng hàm Route::resource() để tạo route cho tất cả các action trong ArticleController.

Ví dụ:

Route::get('articles', 'ArticleController@index');
Route::post('articles', 'ArticleController@store');
Route::get('articles/{article}', 'ArticleController@show');
Route::put('articles/{article}', 'ArticleController@update');
Route::delete('articles/{article}', 'ArticleController@destroy');

Hoặc

Route::resource('articles', 'ArticleController');

Chạy thử nghiệm RESTful Web Service API của ArticleController

Để thử các RESTful API của ArticleController, bạn có thể sử dụng các phương thức HTTP như GET, POST, PUT, DELETE bằng cách sử dụng một công cụ gửi request HTTP như Postman (xem cách cài đặt) hoặc cURL (xem cách cài đặt).

Ví dụ, để gửi một request GET để lấy danh sách các bài viết, bạn có thể sử dụng lệnh cURL sau trên Terminal:

curl -X GET http://localhost/articles

Để gửi một request POST để tạo một bài viết mới, bạn có thể sử dụng lệnh cURL sau:

curl -X POST -H "Content-Type: application/json" -d '{"title": "New article", "body": "Content of the new article"}' http://localhost/articles

Để gửi một request PUT để cập nhật một bài viết, bạn có thể sử dụng lệnh cURL sau:

curl -X PUT -H "Content-Type: application/json" -d '{"title": "Updated article", "body": "Content of the updated article"}' http://localhost/articles/1

Để gửi một request DELETE để xoá một bài viết, bạn có thể sử dụng lệnh cURL sau:

curl -X DELETE http://localhost/articles/1

 

Exit mobile version