참고 링크 : API란?
참고 링크 : RESTful 웹 API 디자인
참고 링크 : HTTP API vs REST API
참고 링크 : 작업 마무리하지 못할 때
New Project 를 통해 SpringBoot 프로젝트를 생성해본다. 얼티밋 버전에서는 Spring initiallzr 가 내장되어 있는 지 몰랐다. 조건에 맞게 설정해준다.
스프링 버전 지정에 주의하며 필요한 의존성 중에서 Spring Web 을 추가한다.
프로젝트를 실행시켜본다. 열린 port 번호를 확인하고 들어가 본다.
위와 같은 페이지가 뜨면 성공.
간단한 테스트용 API를 만들어보자. api/test 라는 path에 들어가면 hello를 출력하도록 하는 class를 작성한다.
어노테이션은 원래 자바에서 사용되는 기능으로 “주석”이라는 의미를 갖고 있다.
주석은 주석인데, 기능이 있는 주석이라고 할 수 있다.
@Override
: 선언한 메서드가 오버리아드 되었다는 것을 나타낸다. 만약 부모 클래스 또는 인터페이스에서 해당 메서드를 찾을 수 없다면 컴파일 에러를 발생시킴@Deprecated
: 해당 메소드가 더 이상 사용되지 않음을 나타낸다. 만약 @Deprecated 어노테이션이 위에 붙은 메소드를 사용할 경우 컴파일 에러를 발생시킴참고 링크 : 어노테이션 - 총정리
참고 링크 : 어노테이션이란?
컨트롤러 클래스는 api 요청을 경로에 따라 매핑해주는 클래스이다. 이 클래스는RequestMapping 어노테이션이 붙어있는 메소드들을 포함한다. 컨트롤러 클래스의 역할은 api를 사용자의 요청을 분류하는 것 까지이다.
@Controller / @RestController 는 거의 같다고 보면 될것 같다. 요즘은 @RestController가 더 많이 쓰인다고 한다.
GetMapping은 GET 메소드에만 적용하는 RequestMapping이다.
@RequestMapping은 api 주소들을 맞는 함수로 이어주는 역할을 한다. 아래 코드는 “api/test”로 요청이 들어오면 test()함수를 실행해! 라는 의미이다.
요청의 경로에 맞게 실행해야 하는 함수를 이어 주는 것이다.
@RequestMapping("api/test")
public String test() {
return "test";
}
즉 Controller와 RequestMapping는 “/abc/def 경로로 가줘!” 하고 요청이 들어오면 그 경로에 맞게 어디로 갈지 길을 찾아 연결시켜주는 역할을 한다.
프로젝트 위치로 가서 gradlew build를 실행하면 빌드가 진행된다. 윈도우에서 진행해서 .\ 이다. 리눅스에서는 ./
build/libs 로 이동하여 jar 파일을 확인한다.
java -jar [jar파일명].jar
을 통해 빌드한다.
인텔리제이에서 실행하지 않아도 웹페이지가 동일하게 동작하는 것을 확인할 수 있다.
빌드 종료는 ctrl + C 를 눌러서 종료한다.
./gradlew clean 를 사용하면 build 폴더가 삭제되는 것을 확인할 수 있다.
다시 빌드하려면 gradlew clean build를 사용하면 된다.
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class TestController {
@GetMapping("name")
public String test(){
return "송민혁";
}
}
간단하게 localhost:8080/name
을 방문하였을 때 내 이름을 호출하는 api를 작성해보았다.
어노테이션을 이용해, RestController 와 GetMapping 을 활용하였다.
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class TestController {
@GetMapping("test")
public String test(@RequestParam("name") String name){
return "hello " + name;
}
}
위와 같이 localhost:8080/test?name=송민혁
을 입력하여, 쿼리 파라미터로 name 이라는 값에 name=송민혁 을 입력하였더니 입력받은 값이 리턴되는 API를 작성해보았다. test라는 path 이후로 쿼리 파라미터를 입력하였다.
lombok 의존성 추가하는 방법은 다른 글에 작성해 놓았다. 이 글을 참고하자.
기존의 클래스를 활용한 방법으로는
private static final Logger log = LoggerFactory.getLogger(Slf4jSample.class);
을 사용해 로그를 찍는 방법이 있다.
@Slf4j 어노테이션을 사용하는 방식에 대해서 봐보자.
@Slf4j
@RestController
public class TestController {
@GetMapping("test")
public String test(@RequestParam("name") String name){
log.info("---------- Log 테스트 ---------");
return "hello " + name;
}
}
동일하게 로그가 찍히며 특징이라면 자동으로 log 변수를 선언하여 준 것을 볼 수 있다.
어노테이션이 편한 모습을 확인할 수 있다.
그러나 여기서 @Slf4j 선언하여 사용할 경우 변수명이 log로 고정된다는 점이 있다.
배운내용, 깨달은 점
어노테이션과 Controller, GetMapping 과 같은 개념을 알게 되었다. 이번 학습에서는 오류가 난 부분과 헤맸던 부분 정리에 신경을 많이 써보았다.
어려웠던 점, 반성하고 싶은 점 / 개선할 방법
이번 스터디는 어려운 점이 없었다!
궁금한 점
이번 스터디엔 없습니다! 감사합니다~