├── .gitignore ├── .gitpod.yml ├── .gitpod └── Dockerfile ├── .thunder_client └── thunder-tests │ ├── thunderActivity.json │ ├── thunderCollection.json │ ├── thunderEnvironment.json │ └── thunderclient.json ├── .vscode ├── extensions.json └── settings.json ├── README.md ├── pom.xml └── src ├── main ├── java │ └── com │ │ └── santander │ │ └── bootcampdio │ │ └── heroes │ │ └── HeroesApplication.java └── resources │ └── application.properties └── test └── java └── com └── santander └── bootcampdio └── heroes └── HeroesApplicationTests.java /.gitignore: -------------------------------------------------------------------------------- 1 | HELP.md 2 | target/ 3 | !.mvn/wrapper/maven-wrapper.jar 4 | !**/src/main/**/target/ 5 | !**/src/test/**/target/ 6 | 7 | ### STS ### 8 | .apt_generated 9 | .classpath 10 | .factorypath 11 | .project 12 | .settings 13 | .springBeans 14 | .sts4-cache 15 | 16 | ### IntelliJ IDEA ### 17 | .idea 18 | *.iws 19 | *.iml 20 | *.ipr 21 | 22 | ### NetBeans ### 23 | /nbproject/private/ 24 | /nbbuild/ 25 | /dist/ 26 | /nbdist/ 27 | /.nb-gradle/ 28 | build/ 29 | !**/src/main/**/build/ 30 | !**/src/test/**/build/ 31 | -------------------------------------------------------------------------------- /.gitpod.yml: -------------------------------------------------------------------------------- 1 | image: 2 | file: .gitpod/Dockerfile 3 | 4 | ports: 5 | - port: 8080 6 | visibility: public 7 | onOpen: notify 8 | 9 | vscode: 10 | extensions: 11 | - vscjava.vscode-java-debug 12 | - EditorConfig.EditorConfig 13 | - vscjava.vscode-java-pack 14 | - redhat.java 15 | - vscjava.vscode-maven 16 | - vscjava.vscode-java-dependency 17 | - vscjava.vscode-spring-boot-dashboard 18 | - Pivotal.vscode-boot-dev-pack 19 | - Pivotal.vscode-spring-boot 20 | - vscjava.vscode-spring-initializr 21 | - rangav.vscode-thunder-client 22 | -------------------------------------------------------------------------------- /.gitpod/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM gitpod/workspace-base 2 | SHELL ["/bin/bash", "-c"] 3 | 4 | # Open JDK 5 | RUN wget https://github.com/adoptium/temurin18-binaries/releases/download/jdk-18.0.1%2B10/OpenJDK18U-jdk_x64_linux_hotspot_18.0.1_10.tar.gz 6 | RUN tar -xvf OpenJDK18U-jdk_x64_linux_hotspot_18.0.1_10.tar.gz 7 | RUN mkdir "$HOME/.java" 8 | RUN mv jdk-18.0.1+10 "$HOME/.java/" 9 | ENV JAVA_HOME="$HOME/.java/jdk-18.0.1+10" 10 | ENV PATH="$PATH:$JAVA_HOME/bin" 11 | RUN rm OpenJDK18U-jdk_x64_linux_hotspot_18.0.1_10.tar.gz 12 | 13 | # Maven 14 | RUN wget https://dlcdn.apache.org/maven/maven-3/3.8.6/binaries/apache-maven-3.8.6-bin.tar.gz 15 | RUN tar -xvf apache-maven-3.8.6-bin.tar.gz 16 | RUN mkdir "$HOME/.maven" 17 | RUN mv apache-maven-3.8.6 "$HOME/.maven/" 18 | ENV M2_HOME="$HOME/.maven/apache-maven-3.8.6" 19 | ENV PATH="$PATH:$M2_HOME/bin" 20 | RUN rm apache-maven-3.8.6-bin.tar.gz 21 | -------------------------------------------------------------------------------- /.thunder_client/thunder-tests/thunderActivity.json: -------------------------------------------------------------------------------- 1 | [] -------------------------------------------------------------------------------- /.thunder_client/thunder-tests/thunderCollection.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "_id": "9ba4207e-f54c-4ab8-acd1-66e6d7b239da", 4 | "colName": "Heroes", 5 | "created": "2022-07-13T17:58:18.291Z", 6 | "sortNum": 10000, 7 | "folders": [], 8 | "settings": { 9 | "headers": [], 10 | "tests": [] 11 | } 12 | } 13 | ] -------------------------------------------------------------------------------- /.thunder_client/thunder-tests/thunderEnvironment.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "_id": "67607ff8-85d5-444a-9594-635fc58204f2", 4 | "name": "(Global Env)", 5 | "default": false, 6 | "global": true, 7 | "sortNum": -1, 8 | "created": "2022-07-13T18:14:38.150Z", 9 | "modified": "2022-07-13T18:14:57.067Z", 10 | "data": [ 11 | { 12 | "name": "api-endpoint", 13 | "value": "https://8080-wilmarques-bootcampdioa-on0co9ca3v3.ws-us54.gitpod.io/" 14 | } 15 | ] 16 | } 17 | ] -------------------------------------------------------------------------------- /.thunder_client/thunder-tests/thunderclient.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "_id": "e0b2404a-8205-4f39-95d6-4806b344399e", 4 | "colId": "9ba4207e-f54c-4ab8-acd1-66e6d7b239da", 5 | "containerId": "", 6 | "name": "Get All", 7 | "url": "{{api-endpoint}}/heroes", 8 | "method": "GET", 9 | "sortNum": 10000, 10 | "created": "2022-07-13T17:58:26.106Z", 11 | "modified": "2022-07-13T18:11:17.586Z", 12 | "headers": [], 13 | "params": [], 14 | "tests": [] 15 | }, 16 | { 17 | "_id": "83f12ae4-397e-4f40-8633-898d3aec6feb", 18 | "colId": "9ba4207e-f54c-4ab8-acd1-66e6d7b239da", 19 | "containerId": "", 20 | "name": "Get First Hero", 21 | "url": "{{api-endpoint}}/heroes/1", 22 | "method": "GET", 23 | "sortNum": 20000, 24 | "created": "2022-07-13T18:03:35.172Z", 25 | "modified": "2022-07-13T18:11:32.680Z", 26 | "headers": [], 27 | "params": [], 28 | "tests": [] 29 | }, 30 | { 31 | "_id": "e315d4e0-7bf9-4d1d-83cb-84fce75926e3", 32 | "colId": "9ba4207e-f54c-4ab8-acd1-66e6d7b239da", 33 | "containerId": "", 34 | "name": "Get Third Hero", 35 | "url": "{{api-endpoint}}/heroes/3", 36 | "method": "GET", 37 | "sortNum": 30000, 38 | "created": "2022-07-13T18:03:52.329Z", 39 | "modified": "2022-07-13T18:11:40.508Z", 40 | "headers": [], 41 | "params": [], 42 | "tests": [] 43 | }, 44 | { 45 | "_id": "36f47406-2172-437c-8e4e-16dbe9f3ef38", 46 | "colId": "9ba4207e-f54c-4ab8-acd1-66e6d7b239da", 47 | "containerId": "", 48 | "name": "Create Hero", 49 | "url": "{{api-endpoint}}/heroes", 50 | "method": "POST", 51 | "sortNum": 40000, 52 | "created": "2022-07-13T18:04:23.934Z", 53 | "modified": "2022-07-13T18:11:48.107Z", 54 | "headers": [], 55 | "params": [], 56 | "body": { 57 | "type": "json", 58 | "raw": "{\n \"name\": \"Thunder Shock\",\n \"description\": \"Solta raios\"\n}", 59 | "form": [] 60 | }, 61 | "tests": [] 62 | }, 63 | { 64 | "_id": "c7f570e1-50d6-4579-9e1d-dee8de979d87", 65 | "colId": "9ba4207e-f54c-4ab8-acd1-66e6d7b239da", 66 | "containerId": "", 67 | "name": "Modify Third Hero", 68 | "url": "{{api-endpoint}}/heroes/3", 69 | "method": "PUT", 70 | "sortNum": 60000, 71 | "created": "2022-07-13T18:07:06.389Z", 72 | "modified": "2022-07-13T18:12:01.003Z", 73 | "headers": [], 74 | "params": [], 75 | "body": { 76 | "type": "json", 77 | "raw": "{\n \"name\": \"Thunder Shock\",\n \"description\": \"Até que é legal.\"\n}", 78 | "form": [] 79 | }, 80 | "tests": [] 81 | }, 82 | { 83 | "_id": "f36f25b8-7765-46a3-8df9-39d1880bdeb7", 84 | "colId": "9ba4207e-f54c-4ab8-acd1-66e6d7b239da", 85 | "containerId": "", 86 | "name": "Delete Third Hero", 87 | "url": "{{api-endpoint}}/heroes/7", 88 | "method": "DELETE", 89 | "sortNum": 70000, 90 | "created": "2022-07-13T18:07:57.356Z", 91 | "modified": "2022-07-13T18:12:34.280Z", 92 | "headers": [], 93 | "params": [], 94 | "tests": [] 95 | } 96 | ] -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "vscjava.vscode-java-debug", 4 | "editorconfig.editorconfig", 5 | "vscjava.vscode-java-pack", 6 | "redhat.java", 7 | "vscjava.vscode-maven", 8 | "vscjava.vscode-spring-boot-dashboard", 9 | "pivotal.vscode-boot-dev-pack", 10 | "pivotal.vscode-spring-boot", 11 | "vscjava.vscode-spring-initializr", 12 | "rangav.vscode-thunder-client" 13 | ] 14 | } 15 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "thunder-client.saveToWorkspace": true, 3 | "thunder-client.saveRequestOnSend": true, 4 | "thunder-client.workspaceRelativePath": ".thunder_client", 5 | "java.configuration.updateBuildConfiguration": "automatic", 6 | "cSpell.words": ["bootcampdio", "hateoas", "springframework"] 7 | } 8 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Back-End para Mentoria Bootcamp DIO 2 | 3 | [![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#/https://github.com/wilmarques/bootcamp-dio-angular-java-back) 4 | 5 | > Aplicação pronta na branch `ready`: . 6 | 7 | ## Consumindo APIs a partir de front-end Angular com um back-end Java 8 | 9 | - Criação da model/entidade 10 | - Criação do Repository 11 | - Pré carga de base H2 12 | - Criação da Controller 13 | - Thunder Client 14 | - HATEOAS 15 | 16 | ## Referências 17 | 18 | - [Building REST services with Spring](https://spring.io/guides/tutorials/rest/) 19 | -------------------------------------------------------------------------------- /pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 4.0.0 5 | 6 | org.springframework.boot 7 | spring-boot-starter-parent 8 | 2.7.1 9 | 10 | 11 | com.santander.bootcampdio 12 | heroes 13 | 0.0.1-SNAPSHOT 14 | heroes 15 | Back-End para Mentoria Bootcamp DIO - Consumindo APIs a partir de front-end Angular com um back-end Java 16 | 17 | 18 18 | 19 | 20 | 21 | org.springframework.boot 22 | spring-boot-starter-data-jpa 23 | 24 | 25 | org.springframework.boot 26 | spring-boot-starter-web 27 | 28 | 29 | org.springframework.boot 30 | spring-boot-starter-hateoas 31 | 32 | 33 | 34 | com.h2database 35 | h2 36 | runtime 37 | 38 | 39 | org.springframework.boot 40 | spring-boot-starter-test 41 | test 42 | 43 | 44 | 45 | 46 | 47 | 48 | org.springframework.boot 49 | spring-boot-maven-plugin 50 | 51 | 52 | 53 | 54 | 55 | -------------------------------------------------------------------------------- /src/main/java/com/santander/bootcampdio/heroes/HeroesApplication.java: -------------------------------------------------------------------------------- 1 | package com.santander.bootcampdio.heroes; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | 6 | @SpringBootApplication 7 | public class HeroesApplication { 8 | 9 | public static void main(String[] args) { 10 | SpringApplication.run(HeroesApplication.class, args); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /src/test/java/com/santander/bootcampdio/heroes/HeroesApplicationTests.java: -------------------------------------------------------------------------------- 1 | package com.santander.bootcampdio.heroes; 2 | 3 | import org.junit.jupiter.api.Test; 4 | import org.springframework.boot.test.context.SpringBootTest; 5 | 6 | @SpringBootTest 7 | class HeroesApplicationTests { 8 | 9 | @Test 10 | void contextLoads() { 11 | } 12 | 13 | } 14 | --------------------------------------------------------------------------------