봄
엔터프라이즈 Java 애플리케이션의 개발을 단순화하는 경량의 오픈 소스 애플리케이션 프레임워크입니다.
스프링 부츠
Spring으로 애플리케이션을 구축할 때 필요한 구성을 처리하는 별도의 프레임워크입니다.
Spring Initializr를 사용하여 Spring 프로젝트를 만들었습니다.
Spring Boot 버전 3.0이 나왔지만 Java 11을 사용했기 때문에 버전 2.79를 사용하여 프로젝트를 빌드했습니다.
Spring Boot 버전을 3.XX로 설정 시 주의사항
- Java 17 이상을 사용해야 합니다.
- 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";
}
또한 이름을 쿼리 매개변수로 허용하는 API를 구축했습니다.
@GetMapping("/")
public String ownName(@RequestParam String name) {
return name;
}
@RequestParam을 사용하여 쿼리 파라미터로 입력된 이름을 가져와서 반환합니다.
두 API의 기능을 하나로 합친 API를 만들어서 쿼리 파라미터 값이 있을 경우에만 값을 보여주는 API를 만들었습니다.
@GetMapping("/name")
public String checkName(@RequestParam(required = false) String name) {
if (name == null) {
return "sangheok";
}
return name;
}
마지막으로 Lombok을 추가하여 각 API에 대한 로그를 생성했습니다.
Lombok은 build.gradle에 다음 종속성을 추가하여 사용할 수 있습니다.
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에 쿼리 파라미터 값이 있을 때와 쿼리 파라미터 값이 없을 때를 따로 코딩하는 경우가 있나요?