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:
- Tạo một model và một controller bằng cách sử dụng lệnh
php artisan make:model ModelName -mc. - Trong model, khai báo các validation rules cho các trường dữ liệu.
- 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
<?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:
- Mở file
routes/web.phpvà thêm các route cho các action trongArticleController. - Sử dụng hàm
Route::resource()để tạo route cho tất cả các action trongArticleController.
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
