🔌 Como Criar Novos Endpoints - ecosif-moviments
📋 Visão Geral
Este guia explica como criar novos endpoints REST no serviço ecosif-moviments.
📝 Passo a Passo
1. Criar DTO (se necessário)
// src/main/java/io/ecosif/moviments/company/dto/NewEntityDTO.java
package io.ecosif.moviments.company.dto;
import lombok.Getter;
import lombok.Setter;
import javax.validation.constraints.NotNull;
@Getter
@Setter
public class NewEntityDTO {
@NotNull
private Long id;
private String name;
// Getters e setters (Lombok gera automaticamente)
}
2. Criar Service (se necessário)
// src/main/java/io/ecosif/moviments/company/service/NewEntityService.java
package io.ecosif.moviments.company.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import io.ecosif.moviments.company.dto.NewEntityDTO;
import io.ecosif.moviments.company.repository.NewEntityRepository;
@Service
@Transactional
public class NewEntityService {
@Autowired
private NewEntityRepository repository;
@Autowired
private ModelMapper modelMapper;
public NewEntityDTO create(NewEntityDTO dto) {
// Lógica de negócio
NewEntity entity = modelMapper.map(dto, NewEntity.class);
NewEntity saved = repository.save(entity);
return modelMapper.map(saved, NewEntityDTO.class);
}
}
3. Criar Controller
// src/main/java/io/ecosif/moviments/company/controller/NewEntityController.java
package io.ecosif.moviments.company.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import io.ecosif.moviments.company.dto.NewEntityDTO;
import io.ecosif.moviments.company.service.NewEntityService;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
@RestController
public class NewEntityController {
@Autowired
private NewEntityService service;
@ApiOperation(value = "Criar nova entidade")
@ApiResponses(value = {
@ApiResponse(code = 201, message = "Criado com sucesso", response = NewEntityDTO.class),
@ApiResponse(code = 400, message = "Dados inválidos")
})
@PostMapping("/newentity")
public ResponseEntity<NewEntityDTO> create(@Valid @RequestBody NewEntityDTO dto) {
NewEntityDTO created = service.create(dto);
return ResponseEntity.status(HttpStatus.CREATED).body(created);
}
@GetMapping("/newentity/{id}")
public ResponseEntity<NewEntityDTO> findById(@PathVariable Long id) {
NewEntityDTO dto = service.findById(id);
return ResponseEntity.ok(dto);
}
}
✅ Boas Práticas
- ✅ Use
@Validpara validação de entrada - ✅ Documente com
@ApiOperatione@ApiResponses - ✅ Retorne status HTTP apropriados
- ✅ Use DTOs, nunca expor Entities diretamente
- ✅ Trate exceções (via
@ExceptionHandlerglobal)
Última Atualização: 2025-11-27