lukaskorl/restful

轻松创建RESTful API响应

v0.5 2014-12-10 13:10 UTC

This package is not auto-updated.

Last update: 2024-09-28 15:40:29 UTC


README

此包允许您创建RESTful API响应,无需考虑底层HTTP层的具体细节。您提供数据,包将负责处理 输出格式状态码。在应用程序出现错误的情况下,也可以创建RESTful错误响应。该包针对与 Laravel 框架一起使用进行了优化。本文档主要侧重于在Laravel框架中使用。

基本用法

RESTful 提供了两个独立的函数来返回 collection 或单个 entity

  • 实体:如果您遵循REST约定,则实体是REST资源的单个条目。在大多数情况下,实体会在URI以资源ID结尾时返回。
  • 集合:一个集合包含一组实体

返回单个实体

要返回单个实体,您可以在 Restful 门面上调用电 entity 方法,并提供任何实现了 ArrayAccess 接口的类。

$response = Restful::entity([
	'name' => 'Dexter',
	'age' => 1
]);

RESTful 将返回一个直接扩展 \Symfony\Component\HttpFoundation\Response\Illuminate\Http\Response。如果您使用Laravel 4框架,则可以直接返回响应对象。

如果您正确使用响应对象,则应用程序将返回

Content-Type:application/json

{
	name: "Dexter",
	age: 1
}

返回集合

类似于实体方法,collection 方法接受一组实体。

$response = Restful::collection([
	[
		'name' => 'Dexter',
		'age' => 1
	],	
	[
		'name' => 'Dori',
		'age' => 1
	],	
]);

集合可能是以下类型

  • array:使用索引数组(作为集合)包含关联数组(作为实体)
  • Illuminate\Support\Collection:基本上与提供数组相同。
  • \Illuminate\Pagination\Paginator:当提供分页器时,RESTful 将自动在响应中包含有关分页的元数据。

响应将如下所示

Content-Type:application/json

{
	data: [
		{
			name: "Dexter",
			age: 1
		},
		{
			name: "Dori",
			age: 1
		}
	]
}

请注意,集合被包装在 data 属性中。这是必要的,因为集合也可能返回 metadata。这些元数据可能包括分页信息。

Laravel 4中的使用

当在 Laravel 4 中使用 RESTful 时,您可以利用 Eloquent 的力量来驱动响应。以下行是任何控制器动作的结果。

return Restful::entity(Dogs::find(1));
return Restful::collection(Dogs::all());
return Restful::collection(Dogs::paginate(3));

高级API

强制输出格式

如果您想强制输出格式,可以使用相应的方法,并将其与您想要提供的内容链接起来。

return Restful::serialized()->collection(Dogs::all());
return Restful::php()->collection(Dogs::all());
return Restful::json()->collection(Dogs::all());
return Restful::jsonp('myFunction')->collection(Dogs::all());
return Restful::yaml()->collection(Dogs::all());
return Restful::xml()->collection(Dogs::all());

Content-Type 标头将根据指定的格式自动设置。

错误

也可以轻松地处理常见的错误。

return Restful::code(404)->error("Ups");
return Restful::forbidden();
return Restful::unauthorized();
return Restful::missing();

安装

Laravel 4框架内

要安装 RESTful,只需将其添加到项目的 composer.json 中作为需求

"require": {
	"lukaskorl/restful": "dev-develop"
}

或运行 composer require lukaskorl/restful

警告RESTful 目前正在积极开发中。我很快将发布稳定版本 1.0.0。在此期间,接口可能会更改。我不建议在生产代码中将 RESTful 作为 dev-develop 依赖项使用。

纯PHP

如果您想在任何其他PHP应用程序中使用 RESTful,请像上面一样通过composer安装它。要使用 RESTful,您可能需要添加几行代码,请参阅下面的示例代码。

<?php
require("vendor/autoload.php");
use \Lukaskorl\Restful\Facades\Vanilla as Restful;

Restful::entity(array( 'name' => 'Dexter' ))->send();

与在框架中使用 RESTful 相比,您不需要返回调用结果,而是直接将输出渲染并发送回用户。

许可证

RESTful 是在 MIT 许可证 下授权的开源软件