Desafio desenvolvedor full-stack 3wings API
Uma API feita em Spring boot que realiza o gerenciamento de posts de blog, em forma de CRUD(Create, Read, Update, Delete)
Exemplo:
- Docker - Versão: 24.0.7
- Java - Versão: 17
- Spring - Versão: 3.2.0
- MySQL - Versão: 8.0.35
OBS: Para rodar você deve mudar as configurações do application.yml
que fica em main/resource
para suas configurações de banco ou passar as variáveis de ambiente com as configurações do seu MySQL. Tenha certeza de que está tudo ligado e não esqueça de informar um banco existente.
spring:
datasource:
url: jdbc:mysql://localhost:3306/<seu_banco_de_dados_criado>?useSSL=false&serverTimezone=UTC
username: <seu_usuário>
password: <sua_senha>
jpa:
hibernate:
ddl-auto: update
Usando mvn
mvn spring-boot:run
Usando jar
mvn clean package
Depois rode
java -jar target/wings-blog-0.0.1-SNAPSHOT.jar
Usando docker-compose
docker compose up -d
Depois disso seu projeto estará rodando em localhost:8080. Você pode chegar a documentação em Swagger em localhost:8080/swagger-ui/index.html#/
OBS: Se quiser rodar os testes de integração tenha certeza que seu servidor MySQL está rodando e todos os parametros de conexão foram configurados, Pois ele levanta o contexto da aplicação
Para rodar sem os testes de integração
mvn clean install -DskipITs
mvn test
*Para rodar com testes de integração
mvn test
GET
/posts
Retorno:
[
{
"id": 1,
"slug": "this-is-the-way",
"title": "This is The Way",
"content": "I can bring your in warm, or I can bring in cold",
"createdAt": "2023-12-15T22:56:23.397+00:00",
"updatedAt": "2023-12-15T22:56:23.397+00:00"
},
{
"id": 2,
"slug": "luke-im-your-father",
"title": "Luke I'm your father",
"content": "NOOOOOOOOO",
"createdAt": "2023-12-15T22:52:40.949+00:00",
"updatedAt": "2023-12-15T22:52:40.949+00:00"
}
]
GET
/posts/{id}
Retorno:
{
"id": 1,
"slug": "this-is-the-way",
"title": "This is The Way",
"content": "I can bring your in warm, or I can bring in cold",
"createdAt": "2023-12-15T22:56:23.397+00:00",
"updatedAt": "2023-12-15T22:56:23.397+00:00"
},
POST
/posts
- Body:
{
"title": "I'm Iron man",
"content": "Senhor Stark?"
}
Retorno:
Status 201 Created
PUT
/posts/{id}
- Body:
{
"title": "I'm Iron man",
"content": "Senhor Stark?"
}
Retorno:
Status 204 No Content
DELETE
/posts/{id}
Retorno:
Status 204 No Content
Rodar os testes de integração
- Como solucionar: Verifique se seu servidor de banco de dados está em execução e verifique se os parametros da aplicação no application.yml ou nas variaveis de ambiente estão corretas.
Problemas ao rodar o docker
- Como solucionar: Se você está usando windows verifique se o docker possui todas as permissões necessárias na sua máquina.
1- Realizar testes de carga e deixar a aplicação ainda mais poderosa