Uma Api conceito para Gestão de universidades. Feito como projeto final no curso de desenvolvimento back-end no grupo flag cursos.
Esse é um projeto desenvolvido em Laravel 9, que visa resolver um problema de gestão de uma universidade fictícia.
Tecnologias | versão | Descrição |
---|---|---|
PHP |
8.1 |
Uma linguagem de script de uso geral popular |
Laravel |
9.x |
O Framework PHP para Artesãos da Web |
MySQL |
15.x |
O MySQL é um sistema de gerenciamento de banco de dados, que utiliza a linguagem SQL como interface. |
Laravel Debuger |
3.7 |
Monitoramento de erros e desempenho do Laravel |
Guzzlehttp |
7.4 |
Guzzle é um cliente PHP HTTP que facilita o envio de solicitações HTTP. |
Sanctum |
3.0 |
Laravel Sanctum Fornece um sistema de autenticação leve para SPAs (aplicativos de página única), aplicativos móveis e APIs simples baseadas em token. |
Vite |
3.0 |
Vite é uma ferramenta de construção que foi inicialmente desenvolvida para Vue.js. |
Postman |
9.x |
Postman é uma plataforma de API para desenvolvedores projetar, construir, testar e iterar suas APIs. |
Dbeaver |
22.x |
DBeaver é um aplicativo de software cliente SQL e uma ferramenta de administração de banco de dados. |
Migration |
--- |
As migrações são como controle de versão para seu banco de dados, permitindo que sua equipe defina e compartilhe a definição do esquema de banco de dados do aplicativo. |
PSR-4 |
--- |
A PSR-4 é uma recomendação da comunidade PHP para organização e carregamento de arquivos e classes PHP. |
Conceitos/Patterns | Descrição |
---|---|
MVC |
MVC é o acrônimo de Model-View-Controller é um padrão de projeto de software, ou padrão de arquitetura de software. |
POO |
Programação orientada a objetos é um paradigma de programação baseado no conceito de "objetos". |
PHP SOLID |
SOLID é um acrônimo para os primeiros cinco princípios de design orientado a objetos (OOD). |
API RESTful |
Api Rest é uma interface de programação de aplicações (API ou API web) que está em conformidade com as restrições do estilo de arquitetura REST, permitindo a interação com serviços web RESTful. |
Gitflow |
Gitflow é um fluxo de trabalho Git legado que originalmente era uma estratégia inovadora e disruptiva para gerenciar ramificações do Git. |
Builder pattern |
Builder é um padrão de projeto de software criacional que permite a separação da construção de um objeto complexo da sua representação. |
Factory pattern |
Use uma função de fábrica para criar objetos. |
Provider pattern |
Disponibilize dados para vários componentes filhos. |
Banco de dados relacional |
Um banco de dados relacional é um banco de dados que modela os dados de uma forma que eles sejam percebidos pelo usuário como tabelas, ou mais formalmente relações. |
- PHP ^8.1
- MySql ^15
- Laravel 9.x
- Servidor Linux
git clone https://github.com/DaniloWA/backEndFlag-app.git
cd backEndFlag-app/
cp .env.example .env
composer install
Essa chave é usada pelo serviço de criptografia Illuminate e deve ser definida como uma cadeia aleatória de 32 caracteres, caso contrário, essas cadeias criptografadas não serão seguras. Faça isso antes de implantar um aplicativo!
php artisan key:generate
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=university
DB_USERNAME=root
DB_PASSWORD=
Caso o nome da base de dados seja diferente altere essa linha : DB_DATABASE= < NOME_AQUI >
php artisan migrate
php artisan db:seed
php artisan migrate --seed
Importar suite de endpoints para o Postman (ficheiros)
cd ./postman
cat .\postman\api_backendflag.postman_collection.json
cat .\postman\api_backendflag.postman_environment.json
Documentação do Postman explicando variáveis e scripts.
http://[SUA_URL]/api/auth/register
Code
{
"name": "UserTeste",
"email": "[email protected]",
"password": "123123123",
"password_confirmation": "123123123",
"token_name": "Token do UserTeste"
}
Code
{
"status": "Success",
"message": "User created!",
"data": {
"user": {
"name": "UserTeste",
"email": "[email protected]",
"updated_at": "2022-09-02T14:11:52.000000Z",
"created_at": "2022-09-02T14:11:52.000000Z"
},
"token": "1|etuMWNMmMVIgWOfDDiibQFhuIG3cc5NJS2RzzTys"
}
}
http://[SUA_URL]/api/auth/login
Code
{
"email": "[email protected]",
"password": "password"
}
Code
{
"status": "Success",
"message": null,
"data": {
"token": "2|n53V5YRqOEkFUaVmt6rJqLvQB5b1b66NqlQkOdMK",
"user": {
"name": "Braum de freljord",
"email": "[email protected]",
"email_verified_at": null,
"created_at": "2022-09-02T14:11:52.000000Z",
"updated_at": "2022-09-02T14:11:52.000000Z"
}
}
}
http://[SUA_URL]/api/students
{
"Authorization": "Bearer {{ token }}"
}
Code
{
"status": "Success",
"message": "All Students Loaded!",
"data": {
"students": [
{
"uuid": "be27c1a3-a90f-4374-9959-3f14be44a3ed",
"slug": "luxanna-crownguard",
"first_name": "Luxanna",
"last_name": "Crownguard",
"nif": "782110039",
"status": 1,
"sex": "F",
"father_full_name": "Pieter Crownguard",
"mother_full_name": "Augatha Crownguard",
"email": "[email protected]",
"phone_num": "+16417960670",
"country": "demacia",
"street_name": "high silvermere",
"postal_code": "98872-2752",
"created_at": "2022-09-02T14:10:54.000000Z",
"updated_at": "2022-09-02T14:10:54.000000Z"
},
...
]
}
http://[SUA_URL]/api/courses
{
"Authorization": "Bearer {{ token }}"
}
Code
{
"status": "Success",
"message": "All Courses Loaded!",
"data": {
"courses": [
{
"uuid": "3c33db3b-d595-4975-b92d-9a0fefde6f04",
"slug": "hogwarts",
"name": "Hogwarts",
"created_at": "2022-09-02T14:10:52.000000Z",
"updated_at": "2022-09-02T14:10:52.000000Z"
},
...
]
}
http://[SUA_URL]/api/teachers
{
"Authorization": "Bearer {{ token }}"
}
Code
{
"status": "Success",
"message": "All Teachers Loaded!",
"data": {
"teachers": [
{
"uuid": "4f72962e-d640-4d03-bdd4-05899f07d3f9",
"slug": "severus-snape",
"first_name": "Severus ",
"last_name": "Snape",
"status": 1,
"created_at": "2022-09-02T14:10:52.000000Z",
"updated_at": "2022-09-02T14:10:52.000000Z"
},
...
]
}
http://[SUA_URL]/api/subjects
{
"Authorization": "Bearer {{ token }}"
}
Code
{
"status": "Success",
"message": "All Subjects Loaded!",
"data": {
"subjects": [
{
"uuid": "b9ded19c-70fd-4888-922b-e10db9654232",
"slug": "defesa-contra-as-artes-das-trevas",
"name": "Defesa Contra as Artes das Trevas",
"workload": 6834,
"description": "Defesa Contra as Artes das Trevas (às vezes escrita como D.C.A.T.) é uma matéria obrigatória na Escola de Magia e Bruxaria de Hogwarts, na qual os alunos aprendem como se defender magicamente contra criaturas e contra praticantes das Artes das Trevas.",
"num_registered_students": 18,
"created_at": "2022-09-02T14:10:52.000000Z",
"updated_at": "2022-09-02T14:10:52.000000Z"
},
...
]
}
http://[SUA_URL]/api/departments
{
"Authorization": "Bearer {{ token }}"
}
Code
{
"status": "Success",
"message": "All Departments Loaded!",
"data": {
"departments": [
{
"uuid": "34271383-0d87-4d99-b4c4-c9da7359209e",
"slug": "departamento-de-cooperação-internacional-em-magia",
"name": "Departamento de Cooperação Internacional em Magia",
"created_at": "2022-09-02T14:10:52.000000Z",
"updated_at": "2022-09-02T14:10:52.000000Z"
},
...
]
}
MIT
Free Software, Hell Yeah!