ducascao/api-maker

Cria endpoints de API de maneira rápida com services e repository

v0.1.2 2021-05-01 02:20 UTC

This package is auto-updated.

Last update: 2024-04-29 04:59:32 UTC


README

Latest Version on Packagist Total Downloads Build Status

Cria endpoints de API de maneira rápida com services e repository.

Instalação

Via Composer

$ composer require ducascao/api-maker
  • Publicar os stubs para a criação dos arquivos:
$ php artisan api-maker:stub-publish

Configuração

  • Abra o arquivo de rotas e registre as rotas do projeto:
ApiMaker::routes();
  • Adicione o seguinte marcador /** API Maker: Routes */ para que o ApiMaker implemente automaticamente as rotas criadas:
Route::group(['middleware' => 'auth:api'], function () {
    /** API Maker: Routes */
});

Uso

  • Para utilizá-lo, basta consumir o seguinte endpoint de acordo com o registro feito na configuração:
POST /build/project
  • Exemplo de request:
{
  "tables": [
    {
      "name": "Template",
      "fields": [
        {
          "name": "description",
          "type": "string"
        },
        {
          "name": "path",
          "type": "string"
        }
      ]
    },
    {
      "name": "Customer",
      "fields": [
        {
          "name": "name",
          "type": "string"
        },
        {
          "name": "phone_number",
          "type": "string",
          "required": false
        },
        {
          "name": "email",
          "type": "string",
          "required": false
        },
        {
          "name": "template_id",
          "type": "unsignedInteger",
          "required": false,
          "relationship": {
            "table": "templates"
          }
        }
      ]
    }
  ]
}
  • Registre os seguintes providers no seu arquivo config/app.php:
/*
* Application Service Providers...
*/
App\Providers\DomainServiceProvider::class,
App\Providers\RepositoryServiceProvider::class,

Atenção

Ao montar o json, respeite o relacionamento das tabelas. A ordem do array também será a ordem das migrations.

Corpo da Request (JSON)

Atributo Tipo Descrição
tables Table object Array de objeto contendo todas as tabelas do projeto

Table object

Atributo Tipo Descrição
name string Nome da tabela em pascal case no singular
fields Field object Array de objeto contendo o campos da tabela

Field object

Atributo Tipo Descrição
name string Nome do campo
type string Tipo do campo de acordo com a doc do Laravel
size string Modifica o tamanho do campo
required boolean Identifica se o campo é obrigatório
relationship string Tabela relacionada ao campo criado em plural snake case

Creditos

Licença

MIT. Por favor, consulte o arquivo de licença pra mais informações.