REST API에 대해 알아보자.

 

REST API에 대해 알아보자.

우연치않게 REST API에 대해 알아보게 되었다. 정리 할 겸 포스팅을 해본다. REST API에 대해 알아보기 전 REST란 무엇인가를 살펴보자. REST REST : "Represantational State Transfer"의 약자. 자원을 이름으..

hwanhwan2.tistory.com

이전 글을 참고하여 Springboot를 이용해 간단한 REST API를 만들어보고자한다.

 

사용툴 : Eclipse

 

Eclipse에 Springboot 개발 환경 구축 방법은 생략.

 


프로젝트 생성하기

 

1) New Project -> Spring Starter Project

 

2. Maven으로 제작 할 예정이다. Type = Maven으로 설정.

    이름들은 알아서 설정.

   Gradle은 나중에 한번 제작 해볼 예정.

 

3. dependency를 추가해준다.

Spring Web) Spring MVC를 사용하는 RESTful API 웹 애플리케이션 구축에 사용된다. 기본으로 Tomcat 내장 서버가 포함된다.

Mybatis Framework) Mybatis를 사용하기 때문에 추가.

MariaDB Driver) MariaDB를 사용하기 때문에 추가.

(*Spring Boot DevTools : 설정을 더 쉽게 해주는 거라는데 적용이 안되서 제외)

 

 

Finish를 누르게 되면 프로젝트가 생성된다. 생성하게 되면 dependency들을 다운받고난 후 이런 구조의 프로젝트가 생성된다.

application.properties.xml에 MariaDB와 Mybatis 설정을 해줘야한다.

# MariaDB
spring.datasource.driver-class-name=org.mariadb.jdbc.Driver //사용할 DB 드라이버 설정
spring.datasource.url=jdbc:mariadb://localhost:3306/(DB이름) //DB 주소
spring.datasource.username=(DB아이디) //DB 아이디
spring.datasource.password=(DB비밀번호) //DB 비밀번호


# Mybatis
mybatis.mapper-locations:mapper/DBMapper.xml //Mapper.xml 경로 설정

 

설정해주고 난 후 Springboot가 잘 구동되는지 확인한다.

 

프로젝트 오른쪽 클릭 -> Run As -> Java Application

 

(본인이 설정했던 이름)Application - (이름) 이 들어간 클래스를 선택하고 OK.

구동이 된 모습.

 

이제 Mybatis를 이용하여 DB와 연결한 후 REST 작업을 한다.


REST 작업

 

spring MVC 구조에 맞게 패키지를 생성한다.

 

프로젝트 구조

HTTP Method는 대표적으로 GET,POST,PUT,DELETE가 있는데 4개의 Method를 다 올리긴 양이 많아서 GET 방식만 작성한다.

 

사용할 DB 테이블(language)

DTO

데이터를 담을 객체를 생성해준다. (getter,setter 필수)

package springboot.dto;

import java.util.Date;

public class language {
	private int language_id;
	private String name;
	private Date last_update;
	public int getLanguage_id() {
		return language_id;
	}
	public void setLanguage_id(int language_id) {
		this.language_id = language_id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Date getLast_update() {
		return last_update;
	}
	public void setLast_update(Date last_update) {
		this.last_update = last_update;
	}
	@Override
	public String toString() {
		return "language [language_id=" + language_id + ", name=" + name + ", last_update=" + last_update + "]";
	}
	
	
}

 

Controller

@RestController : Spring MVC @Controller에 @ResponseBody가 추가 된 것이다. 이 어노테이션을 사용하면 모든 객체를 JSON형태로 반환해준다.

 

GET 방식의 /language URI에 요청하면 language타입의 List를 반환해준다. 물론 JSON 형태로.

@RestController
public class lanController {
	@Autowired
    lanService service;
    
    @RequestMapping(value = "/language", method = RequestMethod.GET)
    public List<language> getLan(){
    	return service.getLan();
    }
}

 

Service

비즈니스 로직과 관련되어 있기 때문에 @Service 어노테이션 사용.

param : POST/PUT 등의 Method 실행 시 넘어오는 파라미터를 담을 공간.

package springboot.service;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import springboot.dto.language;
import springboot.mapper.lanMapper;

@Service
public class lanService {

	@Autowired
	lanMapper mapper;
	Map<String,Object> param = new HashMap<String,Object>();
    
	public List<language> getLan() {
		return mapper.getLan();
	}
}

 

Mapper

생성한 interface를 Mapper로 지정하기 위해 @Mapper 어노테이션 사용.

package springboot.mapper;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Mapper;

import springboot.dto.language;

@Mapper
public interface lanMapper {
	
	List<language> getLan();
    
}

 

 

DBMapper.xml (src/main/resource/mapper/DBMapper.xml)

namespace : Mapper로 설정해준 경로를 넣어준다. 

id : Mapper에서 설정한 메소드 이름.

result Type = 반환할 객체 타입 설정. 

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="springboot.mapper.lanMapper">
	<select id="getLan" resultType="springboot.dto.language">
		SELECT * FROM language
	</select>
</mapper>

 

이 후 Postman 프로그램으로 URL을 입력 후 테스트해본다.

Postman 프로그램으로 테스트

잘불러진다.

'전체 개발.. > RESTful' 카테고리의 다른 글

REST API에 대해 알아보자.  (0) 2022.02.14

+ Recent posts