Criar uma API REST em conjunto com o framework Symfony que faça um CRUD de médicos e suas respectivas especialidades.
Instalações necessárias:
PHP 8
COMPOSER
MYSQL SERVER ou SQLITE ou POSTGRESQL (BANCO FICA A SEU CRITÉRIO)
Extensões PHP habilitadas:
(pdo_mysql
pdo_sqlite
pdo_pgsql)
Será necessario ter instalado o driver e habilitar uma das extensões acima que corresponde a sua escolha ao Banco de Dados.
OBS: As instruções abaixo tem como exemplo de banco de dados o MYSQL. Caso queira utilizar outro tipo de DB depois do passo n° 1 pule para o n°5.
-
Renomeie o arquivo ".env.example" para ".env".
-
Posteriormente preencha no .env subtituindo corretamente as informações do banco que voce irá utilizar.
db_user = Seu usuário no Banco de dados.
db_password = Senha do seu usuário no Banco de dados.
host: Host do servidor do MYSQL
port = Porta do servidor do MYSQL
db_name = O nome que voce gostaria que o Banco de dados recebesse.
DATABASE_URL="mysql://db_user:db_password@host:port/db_name?serverVersion=5.7&charset=utf8mb4"
- Navegue até o terminal da pasta que voce armazenará o projeto e rode o comando:
composer install
Isso fará com que o composer gerencie as bibliotecas que serão utilizadas no projeto.
- Logo após o composer instalar as dependencias do projeto, continue no terminal e execute dois comando
bin/console doctrine:database:create
bin/console doctrine:migrations:migrate
Esses comandos criarão o banco de dados a partir da configuração definida por voce na variavel DATABASE_URL no .env . Depois criará as duas tabelas necessárias para o projeto: especialidade e medico.
- A partir daqui todos os passos são destinados apenas para quem estiver utilizando um Banco de dados diferente do MYSQL. Para utilizar um banco de dados diferente do mysql primeiro adicione um "#" no inicio da linha abaixo no .env, de modo que fique assim:
#DATABASE_URL="mysql://db_user:db_password@host:port/db_name?serverVersion=5.7&charset=utf8mb4
Depois tire o "#" de uma das duas linhas abaixo, de acordo com o tipo de banco que voce utilizará.
#DATABASE_URL="sqlite:///%kernel.project_dir%/var/data.db"
#DATABASE_URL="postgresql://symfony:ChangeMe@127.0.0.1:5432/app?serverVersion=13&charset=utf8"
Se for utilizar o sqlite nenhuma configuração é necessaria e o seu banco será criado em um arquivo na pasta var. Já no PostgreSql alguma configurações sao necessárias.
- Agora navegue até a pasta
migrations
no diretório raiz do projeto e exclua o unico arquivo php que a mesma possui. - Logo após, vá para o terminal da pasta raiz do projeto e execute todos comandos abaixo, porém um de cada vez
composer install
bin/console doctrine:database:create
bin/console doctrine:database:diff
bin/console doctrine:migrations:migrate
As requisições para a API devem seguir os padrões:
Verbo HTTP | Descrição |
---|---|
GET |
Retorna informações de um ou mais registros. |
POST |
Utilizado para criar unm novo registro. |
PUT |
Atualiza dados de um registro . |
DELETE |
Remove um registro do sistema. |
Código | Descrição |
---|---|
200 |
Requisição executada com sucesso. |
204 |
Sem conteúdo. |
404 |
Registro pesquisado não encontrado. (Referente a interação com o recurso). |
422 |
Campos não válidos para requisição. |
500 |
Erro interno no servidor. |
Para o cadastro é necessário:
- Descricão da especialidade
- API endpoint
especialidades
- Verbo Http :
POST
- Request (/application/json)
- Body
{ "descricao" : "Descrição da especialidade" }
- Body
- API endpoint
especialidades
- Verbo Http :
GET
- Response 200 (application/json)
[ { "id": "Id da despesa", "descricao": "Descrição da especialidade" }, { "id": "Id da despesa.", "descricao": "Descrição da especialidade" } ]
- API endpoint
especialidades/{id}
- Verbo Http :
GET
- Response 200 (application/json)
{ "id": "Id da despesa", "descricao": "Descrição da especialidade" }
Para a atualização é necessário:
- Descricão da especialidade
- API endpoint
especialidades\{id}
- Verbo Http :
PUT
- Request (/application/json)
- Body
{ "descricao" : "Descrição atualizada da especialidade" }
- Body
- API endpoint
especialidades/{id}
- Verbo Http :
GET
- Response 204
Para o cadastro é necessário:
- crm do Médico
- nome do Médico
- id da especialidade do Médico
- API endpoint
medicos
- Verbo Http :
POST
- Request (/application/json)
- Body
{ "crm" : "CRM/UF 000000", "nome" : "Nome do Médico", "especialidade": "1" }
- Body
- API endpoint
medicos
- Verbo Http :
GET
- Response 200 (application/json)
[ { "id": "1", "crm" : "CRM/UF 000000", "nome" : "Nome do Médico", "especialidade": { "id": 1, "descricao": "descricao da especialidade " } }, { "id": "1", "crm" : "CRM/UF 000000", "nome" : "Nome do Médico", "especialidade": { "id": 2, "descricao": "descricao da especialidade " } } ]
- API endpoint
medicos/{id}
- Verbo Http :
GET
- Response 200 (application/json)
{ "id": "1", "crm" : "CRM/UF 000000", "nome" : "Nome do Médico", "especialidade": { "id": 1, "descricao": "descricao da especialidade " } }
Para a atualização é necessário:
- crm do Médico
- nome do Médico
- id da especialidade do Médico
- API endpoint
medicos\{id}
- Verbo Http :
PUT
- Request (/application/json)
- Body
{ "crm" : "CRM/UF 000000", "nome" : "Nome do Médico", "especialidade": "5" }
- Body
- API endpoint
medicos/{id}
- Verbo Http :
GET
- Response 204