오늘 공부한 내용은 Spring_Boot에 대해 공부하였다. 오늘부터는 Spring에 대해서 쭉 공부할 예정이다.
오늘 공부한 내용에 대해 설명하겠다. 오늘은Spring_Boot에 대해 공부하였고 GET API에 대해서 실습을 하였다.
Spring_Boot
Spring_Boot는 단순히 실행되며 프로덕션 제품 수준의 스프링 기반 어플리케이션을 쉽게 만들 수 있다.
Spring Boot 어플리케이션에는 Spring 구성이 거의 필요 하지 않다.
Spring Boot java -jar 로 실행하는 Java 어플리케이션을 만들 수 있다.
주요목표
Spring 개발에 대해 빠르고 광범위하게 적용할 수 있는 환경
기본값 설정이 있지만 설정을 바꿀 수 있다.
대규모 프로젝트에 공통적인 비 기능 제공 (보안, 모니터링 등등)
XML 구성 요구사항이 전혀 없다.
즉 핵심만 이야기를 하자면
1. 어플리케이션 개발에 필수 요소들만 모아두었다.
2. 간단한 설정으로 개발 및 커스텀이 가능하다.
3. 간단하고 빠르게 어플리케이션 실행 및 배포가 가능하다.
4. 대듀모프로젝트(운영환경)에 필요한 비 기능적 기능도 제공한다.
5. 오랜 경험에서 나오는 안정적인 운영이 가능하다.
6. Spring에서 불편한 설정이 없어졌다. (XML 설정 등등)
이렇게 Spring_Boot에 대해 간단하게 공부하였다. 다음으로는 Hello Spring Boot에 대해 실습을 하겠다.
우선 실습하기에 앞서 크롬 웹 브라우저에서 테스트가 가능하지만
새로운 테스트 브라우저를 설치하여 테스트를 하기 위해 테스트 브라우저 Talend API Tester를 설치하겠다.
Talend API Tester 설치방법
- 크롬에 접속한 후 크롬 웹스토어를 검색한다.
- 크롬 웹스토어에 접속하여 검색창에 rest api client를 검색한다.
- 우쯕에 확장 프로그램 더보기를 클릭한 후 Talend API Tester를 설치하면 된다.
Hello Spring Boot (API controller)
package com.example.hello.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController // 해당 Class는 REST API 처리하는 Controller
@RequestMapping("/api") // RequestMapping은 URI를 지정해주는 Annotation
public class ApiController {
@GetMapping("/hello") // http://localhost:9090/api/hello가 매핑이 됨.
public String hello() {
return "hello spring boot!";
}
}
Hello Spring Boot 테스트 결과 화면
이와 같이 get방식으로 주소를 검색 후 send를 클릭하면 body부분에 return 값이 출력되는 것을 볼수있다.
200숫자가 뜨면 정상적으로 값을 받아온거고 다른 404 등 번호가 뜨면 에러가 난것이다.
다음은 GET API에 대해서 실습을 하겠다. 저번 블로그에 정리하였던 표를 가져오겠다.
표를 보면 GET메소드가 있고 PathVariable에 대해 실습을 하겠다.
GET API (Get Controller)
package com.example.hello.controller;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/api/get")
public class GetApiController {
// 첫번 째 GetMapping 방법
@GetMapping(path = "/hello") // http://localhost:9090/api/get/hello로 매핑 후 동작
public String hello() {
return "get Hello";
}
각 코드의 설명은 소스코드 주석에 작성되있으므로 참고 부탁드립니다.
각 코드의 결과화면을 보여주겠다. 우선 처음으로 GetMapping 방식이다.
다음은 옛날에 사용하였던 Mapping방식이다.
package com.example.hello.controller;
import org.springframework.web.bind.annotation.*;
// @RequestMapping("/hi") 이런식으로 사용을 하면 get / post / put / delete 등 모든 메소드가 동작하게 된다.
// 이러한 방식은 예전에 사용되던 mapping방법이고 위의 주석 코드와 아래 코드를 둘다 합친것이 GetMapping이다.
// get만 불러오고 싶을 경우에는 이렇게 작성해야 하고 주소는 http://localhost:9090/api/get/hi로 지정됨.
@RequestMapping(path = "/hi", method = RequestMethod.GET)
public String hi() {
return "hi";
}
다음은 특정 입력값에 의해 변화하는 값이 들어오는 예제를 실습하겠다.
package com.example.hello.controller;
import org.springframework.web.bind.annotation.*;
// http://localhost:9090/api/get/path-variable/{name} 이렇게 작성하면 name은 계속 변화를 하기 때문에 아래와 같이 계속 추가를 할 수 없다.
// http://localhost:9090/api/get/path-variable/{spring}
// http://localhost:9090/api/get/path-variable/{java}와 같이 변화하는 값이 들어올 때 마다 주소를 계속 만들면서 메소드를 추가할 수 없으므로
@GetMapping("/path-variable/{name}") // path-variable뒤에 /{}를 붙여주고 그 안에 무엇을 받을건지 작성해준다.
// "/path-variable/{name}"의 name과 아래 코드의 @PathVariable String name의 변수명과 같아야 한다.
// 그러므로 변수명이 String 타입의 name로 일치하게 되는것.
public String pathVariable(@PathVariable String name) {
System.out.println("PathVariable : "+name);
return name;
다음은 개발을 하다가 /path-variable/{name}에다가 name을 해놨는데 변수에는
이름을 다르게 설정해야 할 때는 변수 이름을 다른걸로 선언하고@PathVariable(name = "name")와 같이
@PathVariable 뒤에 주소에 적힌 이름과 동일하게 적어주면 된다.
// 여기서 개발을 하다가 /path-variable/{name}에다가 name을 해놨는데 변수에는 이름을 다르게 설정해야 할 때는
// 변수 이름을 다른걸로 선언하고 @PathVariable(name = "name")와 같이 @PathVariable 뒤에 주소에 적힌 이름과 동일하게 적어주면 된다.
@GetMapping("/path-variable/{name}")
public String pathVariable(@PathVariable(name = "name") String pathName) {
System.out.println("PathVariable : "+pathName);
return pathName;
}
// http://localhost:9090/api/get/query-param?user=steve&email=steve@gmail.com&age=23
}
다음은 특정 입력값에 의해 변화하는 값이 들어오는 예제에 여러가지 값을 입력 후
테스트한 결과이다.
이상으로 오늘 공부한 내용은 여기까지 이다. 내일은 GET메소드의 Query Parame ter에 대해 이어서 공부하겠다. 역시 이론보다 실습이 더 지루하지 않은거 같다. 재밌다.
그럼 다음 이시간에 돌아오겠다. 배위 ~~
'Spring Boot' 카테고리의 다른 글
AI 검증 비즈니스 프로젝트 (0) | 2024.08.23 |
---|---|
IoC, DI (0) | 2023.04.22 |
Object Mapper에 모범사례 실습 (0) | 2023.04.22 |
PUT, DELETE, Response내려주기 실습 (0) | 2023.04.22 |
GET(QueryParame ter), POST (0) | 2023.04.22 |