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을 입력 후 테스트해본다.
잘불러진다.
'전체 개발.. > RESTful' 카테고리의 다른 글
REST API에 대해 알아보자. (0) | 2022.02.14 |
---|