php yii2 api框架,Yii2框架RESTful API 快速入门

本文详细介绍了如何使用Yii2框架构建一个简单的RESTful API。包括目录结构、URL规则配置、模型创建、控制器实现以及测试过程。通过这个教程,你可以创建一个能处理CRUD操作的API接口,支持GET、HEAD、POST、PATCH、PUT和DELETE等HTTP动词。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、目录结构

实现一个简单地RESTful API只需用到三个文件。目录如下:frontend

├─ config

│   └ main.php

├─ controllers

│   └ BookController.php

└─ models

└ Book.php

二、配置URL规则

1.修改服务器的rewrite规则,将所有URL全部指向index.php上,使其支持 /books/1 格式。

如果是Apache服务器,在frontend/web/ 目录中新建.htaccess文件。文件内容如下:RewriteEngine on

# If a directory or a file exists, use the request directly

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

# Otherwise forward the request to index.php

RewriteRule . index.php

如果是Nginx服务器,修改nginx/conf/nginx.conf,在当前"server{}"的"location / {}"中添加下面内容:location / {

try_files $uri $uri/ /index.php$is_args$args;

}

2.修改frontend/config/main.php文件,为book控制器增加一个 URL 规则。这样,就能通过美化的 URL 和有意义的 http 动词进行访问和操作数据。配置如下:'components' => [

'urlManager' => [

'enablePrettyUrl' => true,

'enableStrictParsing' => true,

'showScriptName' => false,

'rules' => [

['class' => 'yii\rest\UrlRule', 'controller' => 'book'],

],

],

],

三、创建一个model

1.在数据库中创建一张book表。book表的内容如下:-- ----------------------------

-- Table structure for book

-- ----------------------------

DROP TABLE IF EXISTS `book`;

CREATE TABLE `book` (

`id` int(10) unsigned NOT NULL AUTO_INCREMENT,

`name` char(50) NOT NULL DEFAULT '',

`num` tinyint(3) unsigned NOT NULL DEFAULT '0',

PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;

-- ----------------------------

-- Records of book

-- ----------------------------

INSERT INTO `book` VALUES ('1', 'toefl', '10');

INSERT INTO `book` VALUES ('2', 'ielts', '20');

INSERT INTO `book` VALUES ('3', 'sat', '30');

INSERT INTO `book` VALUES ('4', 'gre', '40');

INSERT INTO `book` VALUES ('5', 'gmat', '50');

2.在frontend/models/目录中新建Book.php。文件内容如下:namespace frontend\models;

use yii\db\ActiveRecord;

class Book extends ActiveRecord

{

public static function tableName()

{

return 'book';

}

}

四、创建一个控制器

在frontend/controllers/目录中新建BookController.php。控制器类扩展自 yii\rest\ActiveController。通过指定 yii\rest\ActiveController::modelClass 作为 frontend\models\Book, 控制器就能知道使用哪个模型去获取和处理数据。文件内容如下:namespace frontend\controllers;

use yii\rest\ActiveController;

class BookController extends ActiveController

{

public $modelClass = 'frontend\models\Book';

}

五、测试

到这里,我们就已经完成了创建用于访问用户数据 的 RESTful 风格的 API。创建的 API 包括:GET /books: 列出所有的书

HEAD /books: 显示书的列表的概要信息

POST /books: 新增1本书

GET /books/1: 返回 书ID=1的详细信息

HEAD /books/1: 显示 书ID=1的概述信息

PATCH /books/1 and PUT /books/1: 更新书ID=1的信息

DELETE /books/1: 删除书ID=1的信息

OPTIONS /books: 显示关于末端 /books 支持的动词

OPTIONS /books/1: 显示有关末端 /books/1 支持的动词

可以通过Web浏览器中输入 URL http://{frontend的域名}/books 来访问API,或者使用一些浏览器插件来发送特定的 headers 请求,比如Firefox的RestClient、Chrome的Advanced Rest Client、postman等。

六、说明

1.Yii 将在末端使用的控制器的名称自动变为复数。这是因为 yii\rest\UrlRule 能够为他们使用的末端全自动复数化控制器。可以通过设置yii\rest\UrlRule::pluralize为false来禁用此行为:'rules' => [

['class' => 'yii\rest\UrlRule', 'controller' => 'book', 'pluralize' => false],

],

2.可以使用fields和expand参数指定哪些字段应该包含在结果内。例如:URL http://{frontend的域名}/books?fields=name,num 将只返回 name 和 num 字段。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值