IT 프로그래밍-Web

[Web] Spring Boot로 Rest API만들기(1/3)

godsangin 2019. 12. 3. 12:36
반응형

웹 개발자라면 Spring을 모를 수는 없을 것입니다. Spring이란 웹 개발을 더욱 편리하도록 하고 많은 웹 개발자에게 표준적이라고 할 수 있는 프레임워크입니다.

이번 시간에는 간단하게 Spring Project를 만드는 방법과 간단한 테스트를 진행해보도록 하겠습니다.

(IDE - Eclipse, Build Method - Gradle)

 

우선 Eclipse MarketPlace에서 Spring Boot라이브러리를 다운받습니다.(Help - Eclipse MarketPlace)

eclipse marketplace

그리고 Gradle도 다운받도록 합니다.

그런 뒤에 File-New-Other탭으로 가서 Spring Starter Project를 생성합니다.(빌드 타입은 Gradle로 설정해주세요)

의존성은 간단하게 MySQL, Web과 같은 라이브러리만 주입해 보도록 하겠습니다.

자! 그러면 이제 프로젝트가 완성되었습니다.

Spring은 기본적으로 서버에서 실행된다고 가정하고 실행되기 때문에 실행 시 정의된 port number에 따라 local환경의 URL을 배정받습니다.(application.properties파일에서 수정 가능합니다.)

이제 프로젝트가 잘 만들어졌는지 확인해보겠습니다.

src/main/resources/static 폴더 하위에 hello.html이라는 파일을 만듭니다.

(만약 .html을 추가할 수 없거나 수정 불가능한 파일로 만들어질 경우 eclipse market place에서 web tools를 다운받아야 합니다. 저의 경우 eclipse web developer tools 3.14를 사용하고 있습니다.)

<html>
	<head>
	
	</head>
	
	<body>
		<h1>Hello this is spring project</h1>
	</body>
</html>

<hello.html>

 

이제 만들어진 hello를 확인하기 위해서 spring에게 내가 정의하고 접근하는 방식을 알리기 위한 Controller를 추가하고 의존성을 주입해 줘야합니다.

controller패키지를 생성합니다.(src/main/java)

그리고 그 하위에 MyController.java 클래스를 생성합니다.

MyController가 spring에서 controller를 담당하고 있다는 점을 알리기 위해서는 Controller 어노테이션을 사용해줘야 합니다.(@로 표기된 부분)

package com.example.demo.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class MyController {
	@GetMapping("/")
	public String getHTMLHello() {
		return "hello";
	}
}

GetMapping에는 접속할 URL을 커스텀할 수 있습니다.

자 이제 실행해볼까요 ?

에러페이지가 나오네요....

여기서 에러가 발생하는 이유는 hello라는 파일은 있지만 spring이 hello가 hello.html이라는 것을 몰라서 발생하는 에러입니다. 

src/main/resources/application.properties로 이동합니다.

그리고 아래와 같이 수정합니다.

이것은 .html이라는 파일을 자동적으로 spring이 알 수 있도록 접미사를 설정하는 것입니다. html이외에도 jsp, hbs와 같은 파일도 적용할 수 있습니다.

여기까지 완료가 되었다면 아래와 같이 hello.html을 local환경에서 실행할 수 있습니다.

Spring은 잘 짜여진 프레임워크로 개발자 입장에서는 프로젝트의 생명주기(?)에 따라 의존성을 주입하여 원하는 대로 동작하는 웹 환경을 만들 수 있습니다. 오늘 실습한 Controller는 application의 context에서 이동할 수 있는 url을 생성하는 역할을 맡아 웹이 빌드될 때 hello라고 정의한 파일을 실행시키도록 간섭(?)할 수 있었습니다.

다음 시간에는 Contoller와 마찬가지로 Service, Repository등의 의존성을 주입하여 간단한 Rest API를 만들어 보도록 하겠습니다.