快速入门
Yii 提供了一整套用来简化实现 RESTful 风格的 Web Service 服务的 API。 特别是,Yii 支持以下关于 RESTful 风格的 API:
- 支持 Active Record 类的通用API的快速原型
- 涉及的响应格式(在默认情况下支持 JSON 和 XML)
- 支持可选输出字段的定制对象序列化
- 适当的格式的数据采集和验证错误
- 支持 HATEOAS
- 有适当HTTP动词检查的高效的路由
- 内置
OPTIONS
和HEAD
动词的支持 - 认证和授权
- 数据缓存和HTTP缓存
- 速率限制
如下, 我们用一个例子来说明如何用最少的编码来建立一套RESTful风格的API。
假设你想通过 RESTful 风格的 API 来展示用户数据。用户数据被存储在用户DB表, 你已经创建了 [[yii\db\ActiveRecord|ActiveRecord]] 类 app\models\User
来访问该用户数据.
创建一个控制器
首先,创建一个控制器类 app\controllers\UserController
如下,
namespace app\controllers;
use yii\rest\ActiveController;
class UserController extends ActiveController
{
public $modelClass = 'app\models\User';
}
控制器类扩展自 [[yii\rest\ActiveController]]。通过指定 [[yii\rest\ActiveController::modelClass|modelClass]] 作为app\models\User
, 控制器就能知道使用哪个模型去获取和处理数据。
配置URL规则
然后,修改有关在应用程序配置的urlManager
组件的配置:
'urlManager' => [
'enablePrettyUrl' => true,
'enableStrictParsing' => true,
'showScriptName' => false,
'rules' => [
['class' => 'yii\rest\UrlRule', 'controller' => 'user'],
],
]
上面的配置主要是为user
控制器增加一个 URL 规则。这样, 用户的数据就能通过美化的 URL 和有意义的 http 动词进行访问和操作。
尝试
随着以上所做的最小的努力,你已经完成了创建用于访问用户数据 的 RESTful 风格的 API。你所创建的 API 包括:
-
GET /users
: 逐页列出所有用户 -
HEAD /users
: 显示用户列表的概要信息 -
POST /users
: 创建一个新用户 -
GET /users/123
: 返回用户 123 的详细信息 -
HEAD /users/123
: 显示用户 123 的概述信息 -
PATCH /users/123
andPUT /users/123
: 更新用户123 -
DELETE /users/123
: 删除用户123 -
OPTIONS /users
: 显示关于末端/users
支持的动词 -
OPTIONS /users/123
: 显示有关末端/users/123
支持的动词
补充:Yii 将在末端使用的控制器的名称自动变为复数。(译注:个人感觉这里应该变为注意)
你可以访问你的API用curl
命令如下,
$ curl -i -H "Accept:application/json" "http://localhost/users"
HTTP/1.1 200 OK
Date: Sun, 02 Mar 2014 05:31:43 GMT
Server: Apache/2.2.26 (Unix) DAV/2 PHP/5.4.20 mod_ssl/2.2.26 OpenSSL/0.9.8y
X-Powered-By: PHP/5.4.20
X-Pagination-Total-Count: 1000
X-Pagination-Page-Count: 50
X-Pagination-Current-Page: 1
X-Pagination-Per-Page: 20
Link: <http://localhost/users?page=1>; rel=self,
<http://localhost/users?page=2>; rel=next,
<http://localhost/users?page=50>; rel=last
Transfer-Encoding: chunked
Content-Type: application/json; charset=UTF-8
[
{
"id": 1,
...
},
{
"id": 2,
...
},
...
]
试着改变可接受的内容类型为application/xml
,你会看到结果以 XML 格式返回:
$ curl -i -H "Accept:application/xml" "http://localhost/users"
HTTP/1.1 200 OK
Date: Sun, 02 Mar 2014 05:31:43 GMT
Server: Apache/2.2.26 (Unix) DAV/2 PHP/5.4.20 mod_ssl/2.2.26 OpenSSL/0.9.8y
X-Powered-By: PHP/5.4.20
X-Pagination-Total-Count: 1000
X-Pagination-Page-Count: 50
X-Pagination-Current-Page: 1
X-Pagination-Per-Page: 20
Link: <http://localhost/users?page=1>; rel=self,
<http://localhost/users?page=2>; rel=next,
<http://localhost/users?page=50>; rel=last
Transfer-Encoding: chunked
Content-Type: application/xml
<?xml version="1.0" encoding="UTF-8"?>
<response>
<item>
<id>1</id>
...
</item>
<item>
<id>2</id>
...
</item>
...
</response>
技巧:你还可以通过 Web 浏览器中输入 URL
http://localhost/users
来访问你的 API。 尽管如此,你可能需要一些浏览器插件来发送特定的 headers 请求。
如你所见,在 headers 响应,有关于总数,页数的信息,等等。 还有一些链接,让你导航到其他页面的数据。例如:http://localhost/users?page=2
会给你的用户数据的下一个页面。
使用 fields
和 expand
参数,你也可以指定哪些字段应该包含在结果内。 例如:URL http://localhost/users?fields=id,email
将只返回 id
和 email
字段。
补充:你可能已经注意到了
http://localhost/users
的结果包括一些敏感字段, 例如password_hash
,auth_key
你肯定不希望这些出现在你的 API 结果中。 你应该在 响应格式 部分中过滤掉这些字段。
总结
使用 Yii 框架的 RESTful 风格的 API, 在控制器的操作中实现API末端,使用 控制器来组织末端接口为一个单一的资源类型。
从 [[yii\base\Model]] 类扩展的资源被表示为数据模型。 如果你在使用(关系或非关系)数据库,推荐你使用 [[yii\db\ActiveRecord|ActiveRecord]] 来表示资源。
你可以使用 [[yii\rest\UrlRule]] 简化路由到你的 API 末端。
为了方便维护你的WEB前端和后端,建议你开发接口作为一个单独的应用程序,虽然这不是必须的。
相关推荐
在当今的Web开发领域中,RESTful API...由于篇幅限制,本文仅对Yii2制作RESTful API的入门知识做了概述,但已经涵盖了快速入门所需的核心概念和步骤。希望本文能够帮助到刚接触Yii2框架RESTful的小伙伴快速理解并入门。
Yii 2.0强化了对RESTful Web服务的支持,方便构建API驱动的应用。 通过阅读“Yii快速入门教程”和“Yii 2.0中文手册”,你可以更深入地了解这些知识点,并逐步提升你的Yii开发技能。CHM和PDF文档将提供详细的指南...
1. **RESTful API**: 介绍了如何使用Yii2开发RESTful API服务。 2. **缓存**: 讲解了不同缓存策略的实现,包括文件缓存、数据库缓存等。 3. **认证与授权**: 包含了身份验证和权限控制的相关知识,如OAuth、RBAC等...
Yii2还支持RESTful API开发,手册会解释如何构建API,使用JSON Web Token进行身份验证,以及如何实现分页和过滤。对于前端开发,Yii2提供了Asset Manager,方便管理JavaScript和CSS资源,还有Gii代码生成工具,可以...
Yii 2.0 权威指南 本教程的发布遵循 Yii 文档使用许可. ...RESTful Web 服务 已定稿 快速入门 已定稿 资源 已定稿 路由 已定稿 格式化响应 已定稿 授权验证 已定稿 速率限制 已定稿 版本化 已定稿 错误处理 已定稿 测试
- **RESTful API支持**:Yii 2.0提供了一套完整的RESTful Web服务支持,使得构建API变得简单。 - **安全功能**:内置了用户认证、权限控制、CSRF防护等安全特性,有助于保护应用免受攻击。 - **模板引擎**:使用Twig...
### Yii2.0 视频教程相关知识点 ...通过这套 Yii2.0 视频教程,不仅可以快速入门 Yii2.0,还能深入了解其高级特性,对于开发者来说是一份宝贵的资源。无论是新手还是有一定经验的开发者,都能从中获益匪浅。
9. **RESTful Web服务**:Yii提供构建RESTful API的工具,方便移动应用和其他服务的集成。 10. **命令行工具**:Gii是Yii的代码生成工具,可以自动生成模型、控制器、CRUD操作等代码,提高开发效率。 PDF文档可能...
- **在线课程**:如Udemy或Coursera等平台上提供的Yii框架入门教程。 - **社区论坛**:加入Yii框架的社区论坛或QQ群组,与其他开发者交流心得,解决遇到的问题。 #### 四、结语 通过学习本书《敏捷Web应用开发与Yii...
6. **RESTful API支持**:Yii 2.0 支持构建符合REST原则的API,这对于开发Web服务和移动应用非常有用。 7. **单元测试和调试**:框架内置了PHPUnit测试支持,并提供了调试工具如Profiler和Debug Toolbar,有助于...
在实际应用中,开发者可以通过这个示例学习如何配置和调用Durandal的视图和路由,以及如何利用Yii2创建RESTful API来服务前端。 总之,"mazoo"项目为开发者提供了一个学习Durandal和Yii2集成的实践平台,通过研究这...
3. **易学易用**:PHP语法简洁,与C和Java类似,适合初学者快速入门。 4. **数据库支持**:PHP支持多种数据库系统,如MySQL、PostgreSQL、SQLite等。 5. **丰富的函数库**:PHP内建了大量的内置函数,涵盖字符串处理...
10. **PHP与RESTful API**:构建RESTful服务,实现HTTP方法(GET, POST, PUT, DELETE)与资源的操作对应。 **学习资源与实践** “从入门到精通”这本书应该涵盖了这些基础知识和高级主题,通过阅读并实践书中的...
2. **Web服务器集成**:PHP通常与Apache或Nginx等Web服务器配合使用,通过PHP解释器来解析并执行PHP代码,返回结果给浏览器。了解如何配置服务器环境对运行PHP至关重要。 3. **MySQL数据库交互**:在网游中,玩家...
**API 开发**:PHP 也常用于构建 RESTful API,这些 API 为前端应用或其他后端服务提供数据接口。通过 PHP,开发者可以轻松实现 API 的认证、授权和数据交换功能。 #### 五、示例代码 以下是一个简单的 PHP 程序...
3. CodeIgniter:CodeIgniter是一款轻量级框架,适合初学者入门,它提供了简单易用的API,可以快速构建小型项目。 4. Yii:Yii是一个高性能的、适用于开发Web2.0应用的PHP框架。它强调速度、安全性和专业性,具有...
本文将深入探讨PHP编程的基础、安装过程以及相关的文档资源,旨在帮助初学者快速入门并提升PHP编程技能。 一、PHP编程基础 1. PHP语法:PHP代码通常嵌入在HTML文件中,以`开始,`?>`结束。它支持多种数据类型,如...
13. **Web服务API**:PHP可以用来构建RESTful API,与前端或其他系统进行数据交换。 14. **安全实践**:防止SQL注入、XSS攻击,使用`htmlspecialchars()`转义特殊字符,确保代码安全。 15. **性能优化**:使用`...