bradesignstudio/api-bundle

Bundle Symfony base para novas APIs.

dev-master 2018-06-18 14:29 UTC

README

Symfony Bundle que adiciona a base de uma API a um projeto com Symfony 4.1 Flex instalado, com algumas funcionalidades básicas, deixando-o pronto para que a API seja expandida com endpoints de regras da aplicação.

Este bundle foi criado pensado para as necessidades dos que o criaram, e por isso as configurações dos bundles dependentes estão incluídas dentro do próprio bundle, deixando a configuração do projeto restrita à inclusão do arquivo de configuração do bundle, que por sua vez incluem os arquivos de configuração de cada bundle.

Ainda não existe um recipe criado para este bundle. Por esse motivo, execute os passos de instalação descritos abaixo para se certificar de que todos os componentes foram carregados e configurados.

Funcionalidades incluídas:

  • Autenticação via token
  • Gerenciamento de usuário e permissões
  • Entidades de estado e cidade populados
  • Recuperação de senha por e-mail
  • Documentação da API em HTML
  • Testes unitários dos componentes
  • Testes de API para os endpoints

Este bundle tem as seguintes dependências:

  • PHP 7.1.3+
  • Symfony 4.1 Flex
  • SymfonyFrameworkBundle
  • SensioFrameworkExtraBundle
  • DoctrineBundle
  • JMSSerializerBundle
  • FOSRestBundle
  • NelmioCorsBundle
  • NelmioAPIDocBundle
  • TwigBundle
  • SwiftmailerBundle

Instalação e configuração

1. Download do Bundle

Abra o terminal e execute o seguinte comando na raíz do projeto para baixar o bundle.

$ composer require bradesignstudio/api-bundle

2. Habilitação do Bundle

Para habilitar os bundles, adicione-os no arquivo config/bundles.php, caso ainda não estejam:

// config/bundles.php
return [
    Symfony\Bundle\FrameworkBundle\FrameworkBundle::class => ['all' => true],
    Symfony\Bundle\SwiftmailerBundle\SwiftmailerBundle::class => ['all' => true],
    Symfony\Bundle\TwigBundle\TwigBundle::class => ['all' => true],
    Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle::class => ['all' => true],
    Doctrine\Bundle\DoctrineCacheBundle\DoctrineCacheBundle::class => ['all' => true],
    Doctrine\Bundle\DoctrineBundle\DoctrineBundle::class => ['all' => true],
    Doctrine\Bundle\FixturesBundle\DoctrineFixturesBundle::class => ['dev' => true, 'test' => true],
    Doctrine\Bundle\MigrationsBundle\DoctrineMigrationsBundle::class => ['all' => true],
    JMS\SerializerBundle\JMSSerializerBundle::class => ['all' => true],
    Nelmio\CorsBundle\NelmioCorsBundle::class => ['all' => true],
    Nelmio\ApiDocBundle\NelmioApiDocBundle::class => ['all' => true],
    FOS\RestBundle\FOSRestBundle::class => ['all' => true],
    BRA\APIBundle\BRAAPIBundle::class => ['all' => true],
];

3. Configuração do Bundle

Crie o arquivo bra_api.yaml na pasta config/packages do projeto, com o seguinte conteúdo:

imports:
    - { resource: '@BRAAPIBundle/Resources/config/packages.yaml' }

4. Importação das rotas

Crie o arquivo bra_api.yaml na pasta config/routes do projeto, com o seguinte conteúdo:

_bra_api.routes:
    resource: "@BRAAPIBundle/Resources/config/routes.yaml"

5. Configuração do ambiente

Efetue a configuração do ambiente de desenvolvimento do projeto copiando o arquivo .env.dist para o .env e sobrepondo as variáveis contidas nele.

6. Criação do banco de dados

Execute os seguintes comandos no terminal para realizar a criação das tabelas:

$ php bin/console doctrine:database:create
$ php bin/console doctrine:schema:create

7. Carregamento dos dados (opcional)

Execute o seguintes comandos no terminal para realizar o carregamento dos dados:

$ php bin/console doctrine:fixtures:load

8. Documentação da API em HTML

Para acessar a documentação da API em HTML, basta acessar o seguinte endereço, substituindo api-project pelo nome do seu VirtualHost configurado:

http://api-project/api/doc

License

Veja o arquivo LICENSE na raíz do projeto.