bulton-fr / bfw-api
BFW 的 API 模块
2.0.0-rc.11
2016-10-23 00:00 UTC
Requires
- bulton-fr/bfw: ~3.0.0-RC11@RC
- bulton-fr/php-to-xml: 1.0.0
- nikic/fast-route: ~v1.3
Requires (Dev)
- atoum/atoum: ~3.1
- atoum/visibility-extension: ~1.3
This package is auto-updated.
Last update: 2024-09-26 01:55:44 UTC
README
用于与 BFW 框架一起使用 API 的模块
安装
您可以使用 composer 获取此模块: composer require bulton-fr/bfw-api @stable
并且安装模块: ./vendor/bin/bfwInstallModules
配置
此模块的所有配置文件将存放在 app/config/bfw-api/
。有两个文件需要配置(manifest.json 是用于模块更新系统的)。
首先,配置文件 config.php
urlPrefix
:API 所用所有 URL 的前缀。useRest
:如果 API 将使用 REST 格式useGraphQL
:如果 API 将使用 GraphQL 格式。但您目前不能使用它,因为它尚未实现!(问题 #2)
接下来,配置文件 routes.php
这是您 API 的所有路由。不应该将写入另一个配置文件的前缀添加到路由 URL 中。有关要使用的路由格式,请参考 routes.php 配置文件中的示例。
注意:如果没有提供方法,则路由将对所有 HTTP 方法(get、set、put 和 delete)做出响应。
使用方法
我将仅解释 REST API,因为 GraphQL API 尚未实现。当它实现时,我将更新此部分。
您将在目录 /src/api/ 中创建 API 类控制器。所有类都应该扩展 \BfwApi\Rest 类。
您将为控制器中使用的每个 HTTP 方法添加一个方法。所有从请求接收的数据都将存在于 $datas
属性中。如果您想返回响应,可以使用 sendResponse(&$response)
方法。此方法将自动检测 HTTP 请求中要使用的响应格式(xml 或 json),并在发送之前将您的响应转换为正确的格式。
示例
配置
return [ 'urlPrefix' => '/api', 'useRest' => true, 'useGraphQL' => false ];
return [ 'routes' => [ '/books/{bookId:\d+}' => [ 'className' => 'Book', 'method' => ['GET', 'POST'] ], ] ];
控制器类
namespace Api; class Book extends \BfwApi\Rest { public function getRequest() { $returnedDatas = (object) [ 'elements' => (object) [ 'elemA' => [ 0 => (object) [ 'elemB' => 'Foo', 'elemC' => 'Bar' ], 1 => (object) [ 'elemB' => 'Foz', 'elemC' => 'Baz' ] ] ] ]; $this->sendResponse($returnedDatas); } public function postRequest() { $modele = new \Modeles\Books; //We consider to have some checks of the datas here. $status = $modele->updateBooks($this->datas); $response = (object) [ 'status' => $status, ]; $this->sendResponse($response); } }