스프링
엔터프라이즈용 Java 애플리케이션 개발을 편하게 할 수 있게 해주는 오픈소스 경량급 애플리케이션 프레임워크
스프링 부트
스프링으로 애플리케이션을 만들 때에 필요한 설정을 간편하게 처리해주는 별도의 프레임워크
Spring Initializr를 이용해 스프링 프로젝트를 생성하였다.
스프링부트 3.0 버전이 나왔지만 자바 11을 사용하고 있어 2.79 버전으로 프로젝트를 생성하였다.
Spring Boot 버전을 3.X.X로 설정시 주의할 점
- Java 17 이상을 사용해야 한다.
- javax 패키지 이름을 jakarta로 변경해야 한다. 오라클과 자바 라이센스 문제로 모든 javax 패키지를 jakarta로 변경하기로 했다고 한다.
간단한 API를 만들어 정상적으로 작동하는지 확인해봤다.
@RestController
public class TestController {
@GetMapping("/api/test")
public String test() {
return "hello";
}
}
Get으로 요청이 오면 hello를 리턴하는 간단한 API이다.
@RestController를 사용하여 리턴값을 메시지 바디에 담아 화면에 그대로 출력하였다.
다음으로 localhost:8080/name을 호출했을 때 이름을 리턴하는 API를 만들었다.
@GetMapping("/name")
public String name() {
return "sangHyeok";
}
추가로 쿼리 파라미터로 name을 입력받는 API를 만들었다.
@GetMapping("/")
public String ownName(@RequestParam String name) {
return name;
}
@RequestParam으로 쿼리 파라미터로 들어온 name을 받아 리턴하였다.
두가지 API의 기능을 하나로 합쳐 쿼리 파라미터의 값이 있을 때만 그 값을 보여주는 API를 만들어 봤다.
@GetMapping("/name")
public String checkName(@RequestParam(required = false) String name) {
if (name == null) {
return "sangheok";
}
return name;
}
마지막으로 Lombok을 추가하여 API마다 log를 찍어보았다.
build.gradle에 다음과 같은 의존관계를 추가하여 Lombok을 사용할 수 있게 했다.
dependencies {
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
}
API에 로그를 찍어 정상적으로 값이 전달되었는지 확인해보았다.
@GetMapping("/name")
public String checkName(@RequestParam(required = false) String name) {
if (name == null) {
log.info("name=sanghyeok");
return "sangheok";
}
log.info("name={}", name);
return name;
}
배운 내용, 깨달은 점
간단한 API를 직접 만들면서 기본적인 형식을 알게 되었고 HTTP 메서드에 대해서 더 잘 이해할 수 있게 되었다.
궁금한 점
위에 코드 처럼 실무에서 같은 API안에서 쿼리 파라미터 값이 있을 때와 없을 때를 나눠서 코딩하는 경우가 있나요?
'study' 카테고리의 다른 글
[JSCODE] 상점 API 추가 (0) | 2023.03.29 |
---|---|
[JSCODE] Spring Data JPA (0) | 2023.03.24 |
[JSCODE] Spring Data JPA 세팅하기 (0) | 2023.03.21 |
[JSCODE] controller, service, repository 구분하기 (0) | 2023.03.18 |
[JSCODE] API 개발에 꼭 필요한 네트워크 (1) | 2023.03.09 |