adrotec/webapi-bundle

以最少的配置创建一个JSON WebApi,针对多个客户端库,如breeze js

安装次数: 14,638

依赖者: 0

建议者: 0

安全: 0

星标: 5

关注者: 4

分支: 1

公开问题: 1

类型:symfony-bundle

1.0.5 2015-10-12 11:47 UTC

This package is not auto-updated.

Last update: 2024-09-21 11:43:10 UTC


README

该项目不再维护。我们将不接受pull请求、解决问题或发布未来版本。

AdrotecWebApiBundle

这是一个用于使用breeze.server.php创建Web API的Symfony 2bundle。

用法

使用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;
    }

}