1. Spring Boot - Starter Application by Eclipse(간단한 API 서버)
kakaroo2022. 2. 2. 21:10
반응형
article logo
1. 아래 예처럼 URL을 load 했을 때 설정한 Model 정보가 나타나는 API 서버를 만들어 보겠습니다.
2. Create New Spring Starter Project
3. Run As Spring Boot App
4. Server started
4.1 Server 가 이미 사용중일 경우, cmd 창에서 아래 taskkill 명령어를 통해 서버를 강제 종료할 수 있습니다. Web server failed to start. Port 8080 was already in use. >netstat -ao // tomcat port(보통 8080) 사용중인 pid를 찾는다. >taskkill /f /pid [pid]
5. 아직 API가 구현되지 않았으므로, 아래와 같은 화면이 나오는 것은 정상입니다.
6. Data를 처리하는 클래스, 즉 MVC 중 Model 패키지를 생성하고, Model에 속해 있는 클래스도 생성한 뒤, 내부까지 구현합니다.
7. Client 앱이 API를 처리하는 MVC 패턴 중 C에 해당하는 Controller package를 생성합니다. @RestController : Spring framework 이 알아서 해당 클래스를 controller로 인식하고 instance를 생성하게 됩니다.
전통적인 Spring MVC의 컨트롤러인 @Controller는 주로 View를 반환하기 위해 사용합니다. 아래와 같은 과정을 통해 Spring MVC Container는 Client의 요청으로부터 View를 반환합니다. https://kakaroo.tistory.com/10?category=1001571 하지만 Spring MVC의 컨트롤러에서도 Data를 반환해야 하는 경우도 있습니다. Spring MVC의 컨트롤러에서는 데이터를 반환하기 위해 @ResponseBody 어노테이션을 활용해주어야 합니다. 이를 통해 Controller도 Json 형태로 데이터를 반환할 수 있습니다.
@PostConstruct : WAS(Web Application Server)가 띄워질 때 호출된다. 주로 초기화 메소드에 사용됩니다. destroy 직전 호출이 필요할 경우, @PreDestroy annotation 을 사용합니다.
@PostConstructpublicvoidinit(){
userMap = new HashMap<String, UserProfile>();
userMap.put("1", new UserProfile("1", "홍길동", "111-1111", "서울시 강남구 대치1동"));
userMap.put("2", new UserProfile("2", "홍길서", "222-2222", "서울시 강남구 대치2동"));
userMap.put("3", new UserProfile("3", "홍길남", "3333-3333", "서울시 강남구 대치3동"));
}
@GetMapping HTTP GET 요청을 처리하는 메서드를 맵핑(@RequestMapping) 하는 어노테이션입니다. 메서드(url)에 따라 어떤 페이지를 보여줄지 결정하는 역할을 합니다.
<실행화면> 리턴값을 클래스로 지정할 경우 인스턴스의 내용을 json 형식으로 변환해서 텍스트로 출력하게 됩니다. 공공 데이터 API 사용시 리턴되는 값이 json/xml 형태인 것과 같습니다.
RequestMapping 통상적인 사용 예 - GetMapping : Data를 조회할 때 - PostMapping : Data를 생성할 때 - PutMapping : Data를 수정할 때 - DeleteMapping : Data를 삭제할 때
@PutMapping (Update) Test는 일반적인 브라우저에서는 할 수 없고, RestAPI Client 프로그램(ex. postman)을 통해 사용합니다.
*RestAPI REST API 설계 시 가장 중요한 항목은 다음의 2가지로 요약할 수 있습니다. 첫 번째, URI는 정보의 자원을 표현해야 한다. 두 번째, 자원에 대한 행위는 HTTP Method(GET, POST, PUT, DELETE)로 표현한다. ex) Delete /member/1