adrotec / webapi-bundle
以最少的配置创建一个JSON WebApi,针对多个客户端库,如breeze js
1.0.5
2015-10-12 11:47 UTC
Requires
- php: >=5.3.2
- adrotec/breeze.server.php: *
- doctrine/doctrine-bundle: ~1.2
- doctrine/orm: ~2.2,>=2.2.3
- jms/serializer-bundle: ~1.0
This package is not auto-updated.
Last update: 2024-09-21 11:43:10 UTC
README
该项目不再维护。我们将不接受pull请求、解决问题或发布未来版本。
AdrotecWebApiBundle
这是一个用于使用breeze.server.php创建Web API的Symfony 2
bundle。
用法
使用composer安装
"require": { "adrotec/webapi-bundle": "dev-master", "symfony/validator": "dev-master" }
"symfony/validator": "dev-master"
是使用breeze.server.php
进行验证所必需的。
在AppKernel.php
中启用bundle
<?php // app/AppKernel.php public function registerBundles() { $bundles = array( // ... new JMS\SerializerBundle\JMSSerializerBundle(), new Adrotec\WebApiBundle\AdrotecWebApiBundle(), // ... ); }
这里的顺序很重要,因为AdrotecWebApiBundle
覆盖了一些JMSSerializerBundle
的行为。例如:命名策略、懒加载等。
创建一个API控制器
添加路由配置
# src/EmpDirectory/Bundle/Resources/config/routing.yml emp_directory_api: path: /api/{resource} defaults: { _controller: EmpDirectoryBundle:Api:api }
这里的请求参数{resource}
很重要,因为它被库用来识别当前请求的资源。
该bundle公开了一个名为adrotec_webapi
的服务,您可以在控制器中使用它。
// src/EmpDirectory/Bundle/Controller/ApiController.php namespace EmpDirectory\Bundle\Controller; use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Symfony\Component\HttpFoundation\Request; class ApiController extends Controller { public function apiAction(Request $request) { $api = $this->container->get('adrotec_webapi'); $api->addResources(array( 'Employees' => 'EmpDirectory\Bundle\Entity\Employee', 'Departments' => 'EmpDirectory\Bundle\Entity\Department', 'Jobs' => 'EmpDirectory\Bundle\Entity\Job', )); // $request->attributes->set($request->attributes->get('resource')); $response = $api->handle($request); return $response; } }