slim框架
直到几年前,使用框架开发PHP应用程序还是例外,而不是规则。 如今, CakePHP , Symfony , CodeIgniter和Zend Framework等框架已广泛用于PHP应用程序开发,每个框架都提供了独特的功能来简化和简化应用程序开发。
完整的框架通常是过大的。 考虑考虑对Web应用程序进行原型设计,创建快速且肮脏的CRUD前端或部署基本的REST API。 您可以使用传统框架来完成所有这些任务,但是学习和使用它所花费的时间和精力通常超过了收益。 现在考虑微型框架,这些微型框架可实现快速的Web应用程序开发和原型设计,而无需性能开销和成熟框架的学习曲线。
在本文中,我向您介绍Slim,这是一个PHP微框架,旨在快速开发Web应用程序和API。 不要被这个名字所迷惑:Slim带有一个复杂的URL路由器,并支持页面模板,flash消息,加密的cookie和中间件。 它也非常易于理解和使用,并且附带了出色的文档和热情的开发人员社区。
本文将引导您完成使用Slim构建简单的REST API的过程。 除了说明如何使用Slim的URL路由器实现四种基本的REST方法之外,它还演示了Slim的独特功能如何使添加API身份验证和多格式支持等高级功能变得容易。
了解REST
首先,刷新对REST的理解,也称为代表性状态转移。 REST与SOAP的不同之处在于它基于资源和操作,而不是基于方法和数据类型。 资源只是URL,它引用要在其上执行操作的对象或实体(例如,/ users或/ photos),并且操作是四个HTTP动词之一:
- GET(检索)
- POST(创建)
- PUT(更新)
- 删除(删除)
为了更好地理解这一点,请考虑一个简单的示例。 假设您有一个文件共享应用程序,并且需要API方法供开发人员将新文件远程添加到应用程序数据存储中,或从应用程序数据存储中检索现有文件。 在REST方法下,您将公开URL端点(例如/ files),并检查用于访问此URL的HTTP方法以了解所需的操作。 例如,您将HTTP数据包POST到/ files以创建一个新文件,或向GET / files发送一个请求以检索可用文件的列表。
这种方法更容易理解,因为它将现有的HTTP动词映射到CRUD操作。 它还消耗更少的资源,因为不需要正式定义请求/响应头的数据类型。
URL请求的典型REST约定及其含义是:
- GET / items:检索项目列表
- GET / items / 123:检索项目123
- POST /项目:创建一个新项目
- PUT / items / 123:更新项目123
- 删除/ items / 123:删除项目123
Slim的URL路由器可帮助开发人员“将资源URI映射到特定HTTP请求方法的回调函数”,例如GET,POST,PUT和DELETE。 定义新的REST API非常简单,只需定义这些回调方法并用适当的代码填充它们即可。 这正是您在本文其余部分中将要做的。
创建应用程序存根
在开始实施REST API之前,让我们回顾一些注意事项。 在整篇文章中,我假设您有一个正常的开发环境(Apache,PHP和MySQL),并且您熟悉SQL和XML的基础知识。 我还假定您的Apache Web服务器已配置为支持虚拟主机,URL重写以及PUT和DELETE请求。
REST API旨在与资源一起使用。 在这种情况下,资源是文章,每篇文章都有标题,URL,日期和唯一标识符。 这些资源存储在MySQL数据库中,本文开发的示例REST API允许开发人员使用常规REST约定检索,添加,删除和更新这些文章。 本文的大部分内容假设JSON请求和响应主体。 有关如何处理XML请求和响应的更多信息,请参阅本文后面的支持多响应格式 。
步骤1:创建应用程序目录结构
切换到Web服务器的文档根目录(在Linux®上通常为/ usr / local / apache / htdocs,在Windows®上通常为c:\ Program Files \ Apache \ htdocs),并为应用程序创建一个新的子目录。 将此目录命名为slim /。
shell> cd /usr/local/apache/htdocs
shell> mkdir slim
本文通篇将此目录称为$ SLIM_ROOT。
步骤2:下载Slim框架
接下来,您需要添加Slim。 如果您使用的是PHP依赖性管理器Composer,只需在$ SLIM_ROOT / composer.json中创建一个文件,内容如下:
{
"require": {
"slim/slim": "2.*"
}
}
使用Composer通过以下命令安装Slim:
shell> php composer.phar install
要加载Slim,请将此行添加到应用程序的“ index.php”文件中:
<?php
require 'vendor/autoload.php';
如果不使用Composer,则可以手动下载Slim框架,并将下载档案中的Slim目录提取到PHP包含路径中的目录中,或者提取到$ SLIM_ROOT / Slim中。
步骤3:初始化示例数据库
下一步是初始化应用程序数据库。 创建一个名为“ articles”的新MySQL表来保存商品记录:
CREATE TABLE IF NOT EXISTS `articles` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` text NOT NULL,
`url` text NOT NULL,
`date` date NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8
给该表添加一些入门记录:
INSERT INTO `articles` (`id`, `title`, `url`, `date`) VALUES
(1, 'Search and integrate Google+ activity streams with PHP applications',
'http://www.ibm.com/developerworks/xml/library/x-googleplusphp/index.html', '2012-07-10');
INSERT INTO `articles` (`id`, `title`, `url`, `date`) VALUES
(2, 'Getting Started with Zend Server CE',
'http://devzone.zend.com/1389/getting-started-with-zend-server-ce/', '2009-03-02');
要与该MySQL数据库进行交互,您还应该下载RedBeanPHP,这是一种占用资源少的ORM库。 该库以单个文件形式提供,您可以轻松地将其包含在PHP脚本中。 切记将文件复制到PHP包含路径中的目录或$ SLIM_ROOT / RedBean中。
步骤4:定义一个虚拟主机
为了使访问应用程序更加容易,请定义一个新的虚拟主机并将其设置为工作目录。 建议您执行此可选步骤,特别是当您在拥有多个正在进行的应用程序的开发计算机上工作时,因为它会创建目标部署环境的更紧密的副本。 Slim还带有一个“ .htaccess”文件,使您可以使用漂亮的URL删除“ index.php”前缀。
要为应用程序设置命名的虚拟主机,请打开Apache配置文件(httpd.conf或httpd-vhosts.conf)并向其中添加以下行:
NameVirtualHost 127.0.0.1
<VirtualHost 127.0.0.1>
DocumentRoot "/usr/local/apache/htdocs/slim"
ServerName example.localhost
</VirtualHost>
这些行定义了一个新的虚拟主机http://example.localhost/,其文档根目录与$ SLIM_ROOT相对应。 重新启动Web服务器以激活这些新设置。 请注意,您可能需要更新网络的本地DNS服务器以告知其有关新主机的信息。
完成此任务后,将浏览器指向http://example.localhost/,您将看到类似图1的内容 。