(JSCODE) 스프링 부트 프로젝트 생성

엔터프라이즈 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에 쿼리 파라미터 값이 있을 때와 쿼리 파라미터 값이 없을 때를 따로 코딩하는 경우가 있나요?