REST API란? Representational State Transfer의 약자이며 ‘대표적인 상태 전달’이라는 뜻으로 하나의 URI는 하나의 Resource를 대표하도록 설계된다는 개념이다. 즉, 스마트폰, 태플릿, PC 등 다양한 단말장치에 상관없이 공통으로 데이터를 처리할 수 있도록 사용자가 어떤 요청을 했을 때 화면 (HTML)을 리턴하지 않고 데이타만 리턴해주는 방식이다.

SpringBoot를 이용하여 간단하게 REST API를 구현해 보자.

1. SpringBoot 프로젝트 생성

이클립스 : File > New > Project > Spring Starter Project

2. 컨트롤러 작성

Case1. String형으로 리턴

Java 코드

@RestController
public class HelloController {
	 
  /**
    * Welcome을 반환한다.
    * @return Welcome
    */
    @GetMapping("api/welcome") 
    @ResponseBody 
    public String apiWelcome() { 
      return "Welcome"; 
  }
}

URI 호출

Case2. Json형으로 리턴

Java 코드

/**
* Welcome을 Json 형식으로 반환한다.
* @return {"message":"Welcome"}
*/
@GetMapping("api/json") 
@ResponseBody 				  
public Map<String, String> apiJson() { 
  
  Map<String, String> map = new HashMap<>(); 
  map.put("message", "Welcome"); 
  return map; 
}

URI 호출

Case3. 객체를 Json형으로 리턴

Java 코드


@RestController
public class HelloController {
  /**
    * 객체를 Json 형식으로 변환한다.
    * @return {"id":100,"name":"onda2me"}
    */
  @GetMapping("api/user")
  @ResponseBody 
  public User apiUser() {
    
    User user = new User();		
    user.setId(100);
    user.setName("onda2me");
    
    return user;
  }
}

// User Class 생성
public class User {
	
	private int id;
	private String name;
	
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}	
}

URI 호출


3. Trouble Shooting #1

SpringBoot 프로젝트 생성 후 첫 실행 시 아래와 같은 오류가 발생하는 경우 !!
Failed to configure a DataSource : DataSource 설정을 하지 않아서 발생하는 오류

1. pom.xml에 DB Connector Library를 추가한다.

<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>	
</dependency>

2. resources에 application.properties 파일을 추가하여 DB정보를 설정한다.

# application.properties 설정
# 웹서버 포트 기본:8080, 아래와 같이 다른 포트로 변경하여 사용가능
server.port=9000

# database 설정
spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://yours_database_url
spring.datasource.username=yours_database_user
spring.datasource.password=yours_database_password

댓글남기기