Skip to content

GitLab

  • Menu
Projects Groups Snippets
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • H Hopeful Wiki
  • Project information
    • Project information
    • Activity
    • Labels
    • Planning hierarchy
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 0
    • Issues 0
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Monitor
    • Monitor
    • Incidents
  • Packages & Registries
    • Packages & Registries
    • Package Registry
    • Infrastructure Registry
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • Gestao de Planos de Contingencia em Desastres
  • Hopeful Wiki
  • Wiki
  • backend

backend · Changes

Page history
Update backend authored Sep 15, 2025 by Lucca Zen Mazzoccato's avatar Lucca Zen Mazzoccato
Hide whitespace changes
Inline Side-by-side
backend.md
View page @ 16a807cc
...@@ -7,12 +7,69 @@ Esta página visa apresentar os padrões a serem utilizados no desenvolvimento d ...@@ -7,12 +7,69 @@ Esta página visa apresentar os padrões a serem utilizados no desenvolvimento d
1. [Swagger](#swagger) 1. [Swagger](#swagger)
2. [📌 DTOs](#-dtos) 2. [📌 DTOs](#-dtos)
3. [Estrutura de Exceções](#estrutura-de-exce%C3%A7%C3%B5es) 3. [Estrutura de Exceções](#estrutura-de-exce%C3%A7%C3%B5es)
4. [@Get (Controller + Service)](#-padrão-de-código-get-controller--service)
--- ---
## Swagger ## Swagger
Além de seguir os padrões determinados pela **arquitetura** e **estrutura de pastas** do projeto, é necessário **atualizar a estrutura do Swagger** conforme é realizado o desenvolvimento da aplicação. Além de seguir os padrões determinados pela **arquitetura** e **estrutura de pastas** do projeto, é necessário **atualizar a estrutura do Swagger** conforme é realizado o desenvolvimento da aplicação.
# :key: Fluxo de uso do Swagger com Login e Token
1. **Abrir o Swagger**
- Acesse no navegador o link:
:point_right: [http://localhost:8080/swagger-ui/index.html](http://localhost:8080/swagger-ui/index.html)
2. **Localizar o endpoint de Login**
- Na lista de endpoints, procure pelo recurso **`/login`**.
- Clique nele para expandir os detalhes.
<p align="center">
<img width="800" height="400" alt="image" src="https://github.com/user-attachments/assets/7d931b5f-3a9a-4673-8f7e-fe70b1099df5" />
</p>
3. **Executar o Login**
- Clique no botão **`Try it out`**.
- Será exibido um corpo **JSON** no campo de request body, parecido com:
```json
{
"user": "string",
"senha": "string"
}
```
- Substitua os valores de `"string"` pelos dados que estão cadastrados no banco, por exemplo:
```json
{
"user": "[email protected]",
"senha": "Senha"
}
```
- Clique em **Execute**.
<p align="center">
<img width="800" height="400" alt="image" src="https://github.com/user-attachments/assets/99394542-1040-45dd-820e-ca88d64822c8" />
</p>
4. **Obter o Token**
- A resposta da requisição conterá um campo `token`.
- Copie apenas o valor do token, ou seja, o texto que aparece **entre as aspas** após `"token":"`.
<p align="center">
<img width="1367" height="163" alt="image" src="https://github.com/user-attachments/assets/72f81c1e-884a-4c42-9d4b-e2fd8880de4f" />
</p>
5. **Autorizar o Swagger**
- No canto superior direito do Swagger, clique no botão **Authorize** (ícone de cadeado :lock:).
- Vai abrir um modal pedindo o token de autenticação.
- Cole o token copiado.
- Confirme clicando em **Authorize** e depois **Close**.
<p align="center">
<img width="800" height="400" alt="image" src="https://github.com/user-attachments/assets/e11cd8e4-e59a-4d39-ae54-39c3708e44bc" />
</p>
6. **Usar os Endpoints Protegidos**
- Agora todos os endpoints que exigem autenticação já estarão configurados para enviar o token no header (`Authorization: Bearer <token>`).
- Basta navegar pelos endpoints, clicar em **Try it out** e executar normalmente.
As marcações do **Swagger** devem ser inseridas em: As marcações do **Swagger** devem ser inseridas em:
- **Controllers** - **Controllers**
...@@ -96,6 +153,62 @@ Retorno : ...@@ -96,6 +153,62 @@ Retorno :
"status": "NOT_FOUND" "status": "NOT_FOUND"
} }
``` ```
# 🔹 Padrão de Código: @Get (Controller + Service)
1. A requisição chega no Controller e chama o método da service para buscar todas as instâncias no banco de dados.
2. O método cityService.getAllCities() é chamado.
3.A resposta é devolvida em formato JSON contendo a lista de CityResponseDTO.
### Classe Controller
```java
@GetMapping
@Operation(summary = "Get All Services",
description = "Returns a list of all services available in the system")
@ApiResponse(responseCode = "200", description = "Cities retrieved successfully")
public ResponseEntity<List<CityResponseDTO>> getAllCities() {
List<CityResponseDTO> cities = cityService.getAllCities();
return ResponseEntity.ok(cities);
}
```
### Classe Service
```java
public List<CityResponseDTO> getAllCities() {
List<City> cities = cityRepository.findAll();
return cities.stream()
.map(city -> new CityResponseDTO(city.getId(), city.getName(), city.getState()))
.toList();
}
```
## Get By id
### Classe Controller
```java
@GetMapping("/{id}")
@PreAuthorize("hasRole('ADMIN')")
public ResponseEntity<UserResponseDTO> getUser(@PathVariable UUID id) {
return ResponseEntity.ok(service.getUserById(id));
}
```
### Na service
```java
@Transactional
public UserResponseDTO getUserById(UUID id) {
User user = userRepository
.findById(id)
.orElseThrow(() -> new NotFoundException("User not found"));
return modelMapper.map(user, UserResponseDTO.class);
}
```
Boas Práticas de Exceções Boas Práticas de Exceções
......
Clone repository
  • Arquitetura
  • Banco de Dados
  • Frontend
  • backend
  • configuracao
  • design_mockups
  • escopo
  • Home
  • processo