Yii - RESTful API đang hoạt động
Lớp điều khiển mở rộng từ yii\rest\ActiveControllerlớp, thực hiện các hành động RESTful chung. Chúng tôi chỉ định$modelClass để bộ điều khiển biết mô hình nào sẽ sử dụng để thao tác dữ liệu.
Step 1 - Tạo một tệp có tên UserController.php bên trong thư mục bộ điều khiển.
<?php
namespace app\controllers;
use yii\rest\ActiveController;
class UserController extends ActiveController {
public $modelClass = 'app\models\MyUser';
}
?>
Tiếp theo, chúng ta cần thiết lập thành phần urlManager, để dữ liệu người dùng có thể được truy cập và thao tác với các động từ HTTP có ý nghĩa và các URL đẹp. Để cho phép API truy cập vào dữ liệu trong JSON, chúng ta nên định cấu hình thuộc tính phân tích cú pháp củarequest thành phần ứng dụng.
Step 2 - Sửa đổi config/web.php nộp theo cách này -
<?php
$params = require(__DIR__ . '/params.php'); $config = [
'id' => 'basic',
'basePath' => dirname(__DIR__),
'bootstrap' => ['log'],
'components' => [
'request' => [
// !!! insert a secret key in the following (if it is empty) - this is
//required by cookie validation
'cookieValidationKey' => 'ymoaYrebZHa8gURuolioHGlK8fLXCKjO',
],
'cache' => [
'class' => 'yii\caching\FileCache',
],
'user' => [
'identityClass' => 'app\models\User',
'enableAutoLogin' => true,
],
'errorHandler' => [
'errorAction' => 'site/error',
],
'mailer' => [
'class' => 'yii\swiftmailer\Mailer',
// send all mails to a file by default. You have to set
// 'useFileTransport' to false and configure a transport
// for the mailer to send real emails.
'useFileTransport' => true,
],
'log' => [
'traceLevel' => YII_DEBUG ? 3 : 0,
'targets' => [
[
'class' => 'yii\log\FileTarget',
'levels' => ['error', 'warning'],
],
],
],
'urlManager' => [
'enablePrettyUrl' => true,
'enableStrictParsing' => true,
'showScriptName' => false,
'rules' => [
['class' => 'yii\rest\UrlRule', 'controller' => 'user'],
],
],
'request' => [
'parsers' => [
'application/json' => 'yii\web\JsonParser',
]
],
'db' => require(__DIR__ . '/db.php'),
],
'modules' => [
'hello' => [
'class' => 'app\modules\hello\Hello',
],
],
'params' => $params, ]; if (YII_ENV_DEV) { // configuration adjustments for 'dev' environment $config['bootstrap'][] = 'debug';
$config['modules']['debug'] = [ 'class' => 'yii\debug\Module', ]; $config['bootstrap'][] = 'gii';
$config['modules']['gii'] = [ 'class' => 'yii\gii\Module', ]; } return $config;
?>
Với nỗ lực tối thiểu, chúng tôi vừa xây dựng một API RESTful để truy cập dữ liệu người dùng. Các API bao gồm -
GET /users - liệt kê tất cả người dùng từng trang
HEAD /users - hiển thị thông tin tổng quan về danh sách người dùng
POST /users - tạo người dùng mới
GET /users/20 - trả lại thông tin chi tiết của người dùng 20
HEAD /users/20 - hiển thị thông tin tổng quan của người dùng 20
PATCH /users/ 20 and PUT /users/20 - cập nhật người dùng 20
DELETE /users/20 - xóa người dùng 20
OPTIONS /users - hiển thị các động từ được hỗ trợ liên quan đến điểm cuối / người dùng
OPTIONS /users/20 - hiển thị các động từ được hỗ trợ liên quan đến endpoint / users / 20
Lưu ý rằng Yii tự động đa dạng hóa tên bộ điều khiển.
Step 3 - Bây giờ, mở Postman, đấm vào http://localhost:8080/usersvà nhấp vào “Gửi”. Bạn sẽ thấy như sau.
Step 4 - Để tạo người dùng mới, hãy thay đổi loại yêu cầu thành ĐĂNG, thêm hai thông số nội dung: tên và email, rồi nhấp vào “Gửi”.
Step 5 - Bạn có thể sử dụng fieldstham số để chỉ định trường nào sẽ được đưa vào kết quả. Ví dụ: URLhttp://localhost:8080/users?fields=id, name sẽ chỉ trả về id và name các trường như được hiển thị trong ảnh chụp màn hình sau.