noherczeg/restext

此包已 弃用 并不再维护。未建议替代包。

Laravel 框架的 REST 扩展包

dev-master 2013-12-20 08:49 UTC

This package is not auto-updated.

Last update: 2022-06-06 14:47:13 UTC


README

Laravel 框架的 PHP REST 扩展。

这是一个预览版软件。

使用此包,您可以轻松创建一个 REST API,

  • 可以通过路由前缀进行版本控制
  • 支持通过接口实现进行控制器或方法内的授权
  • 支持查询字符串感知的分页,带有分页链接和元数据
  • 链接生成(例如,自动生成 self、父级、分页)
  • 当前可以生成 JSON 和 XML 响应,这些响应可以在配置中设置或在方法中覆盖
  • 通过 Accept 标头、配置文件或方法设置进行内容协商

##安装

此包基于 composer,因此如果您已安装它,您就已经完成了一半。

Composer

https://getcomposer.org.cn/download/ 下载并安装 composer

将以下内容添加到项目根目录的 composer.json 文件中

{
    "require": {
        "noherczeg/restext": "dev-master"
    }
}

完成后,只需运行 php composer install,即可使用此包!

将包注册为 Laravel 4 中的服务

将以下内容放入您的 app/config/app.php 文件中的 providers 数组下

'Noherczeg\RestExt\RestExtServiceProvider',

在相同文件下的 aliases 中添加外观的别名

'RestExt'         => 'Noherczeg\RestExt\Facades\RestExt',
'RestLinker'      => 'Noherczeg\RestExt\Facades\RestLinker',
'RestResponse'    => 'Noherczeg\RestExt\Facades\RestResponse',

通过发布配置文件覆盖默认配置。您可以通过输入

$ php artisan config:publish noherczeg/restext

可选地,我提供了一个数据库日志表默认模式的默认模式,可以迁移并用于数据库日志。

$ php artisan migrate --package=noherczeg/restext

##一般信息

此包不是一个简单的包含服务的包,而是一系列可能有助于使用 Laravel 框架开发 RESTful 网络应用的工具集合。目前它与 Laravel 框架耦合,因此不能单独使用,但可以通过实现提供的接口或扩展一些类来替换其中的一些组件。

实体/模型

建议在您的模型中实现 Noherczeg\RestExt\Entities\ResourceEntity 或扩展一个已实现上述接口的预建实体:Noherczeg\RestExt\Entities\ResourceEloquentEntity

ResourceEntity 实现为您的模型添加了以下功能:

  • 自我验证
  • 使用相同的方法调用生成可分页或普通集合

仓库

在您的应用程序中使用仓库是一个好习惯,因为这可以使您从任何存储或数据库实现中抽象出依赖关系。

与上面一样,此包中有一个接口可以帮助您:Noherczeg\RestExt\Repository\CRUDRepository,以及一个可以扩展的示例实现:Noherczeg\RestExt\Repository\RestExtRepository

实现或扩展 CRUDRepository 将为您的基本 CRUD 操作以及分页支持提供支持。

服务

下一个抽象级别是服务级别。目前没有服务接口,因为不是每个人都使用它们,因此不会包含在内。

额外功能

如上所述,此软件包除了数据操作工具外还包含其他工具。这些工具可以在软件包的额外文件夹中找到。

一般来说,您需要将它们复制到您的 app/ 目录中。

errors.php (链接)

此软件包目前以符合在控制器外捕获异常和事件的惯例的方式进行构建,因此在此文件中,您可能会找到一些通用错误处理程序的示例,例如

  • 权限异常
  • 4xx 错误
  • 数据存储错误
  • 等等。

使用方法:将 require app_path().'/errors.php'; 添加到 app/start/global.php 文件的末尾

filters.php (链接)

在此文件中,我提供了除了默认示例之外的一些额外示例,这些示例可以帮助您构建REST API。

  • 使用Accept头部处理本地化
  • 使用HTTP基本认证进行身份验证

使用方法:将 require app_path().'/filters.php'; 添加到 app/start/global.php 文件的末尾

logs.php (链接)

这是一个示例监听器,它将所有内容记录到数据库中。

使用方法:将 require app_path().'/logs.php'; 添加到 app/start/global.php 文件的末尾

RootController.php (链接)

这可以放在您控制器所在的任何位置,并用作您REST API的入口点。由于Richardson成熟度模型Level3需要HATEOAS支持,这对于您的应用程序至关重要。

在示例中,有几个功能展示了其他软件包功能,如链接构建和授权接口的使用。

此控制器仅生成链接,但由于资源也可以包含内容,如果您愿意,您可以提供其他数据。

routes.php (链接)

带有基本身份验证的版本化路由。使用上述示例中的RootController:

指南

由于完整的用法示例可能相当庞大,具体取决于我想展示多少,因此以下链接中提供了单独的指南

##开发者注意:如果软件包或其内容有任何问题,请通过pull请求或问题通知我。我会跟踪这个repo,并且会永远这样做,所以你可以联系我:)