Spring

Spring STEP 14 - RESTful Service

2023. 6. 22. 16:31
728x90

★ REST API, RESTful Service

 

★ REST, Representational State Transfer

  • 웹상의 자원(문서, 이미지, 동영상, 데이터 등)을 자원명으로 표시해서 자원의 상태를 주고 받는 행위
  • HTTP URI를 통해서 자원을 명시하고, HTTP Method를 통해서 자원에 대한 CRUD 처리하는 방식
  • URI(URL) 표기 방식

★ 게시판 구현

  • 1. 여태 사용한 구현 방식 > URI 표현
- 목록보기 GET http://localhost/board/list.do
- 추가하기 POST http://localhost/board/add.do
- 수정하기 POST http://localhost/board/edit.do
- 삭제하기 POST http://localhost/board/del.do
- 검색하기 GET http://localhost/board/list.do?word=검색어
  • 2. REST 방식
- 목록보기 GET http://localhost/board
- 추가하기 POST http://localhost/board + 데이터(패킷 저장)
- 수정하기 PUT http://localhost/board/1 + 데이터(패킷 저장)
- 삭제하기 DELETE http://localhost/board/1
- 검색하기 GET http://localhost/board/검색어

 

★ REST API 설계 규칙

1. URI에 자원을 표시한다. > 마지막 단어가 자원을 표현한다.
2. URI에 동사를 표시하지 않는다.
3. HTTP Method를 사용해서 행동을 표현한다.
    a. Get : 리소스 요청
    b. POST : 데이터 전달 + 서버측 생성
    c. PUT : 데이터 전달 + 수정(전체 수정 - 레코드의 모든 컬럼 수정) 
    d. PATCH : 데이터 전달 + 수정(일부 수정 - 레코드의 일부 컬럼 수정)
    e. DELETE : 데이터 삭제
4. URI + HTTP Method = REST API
5. 구분자는 '/'를 사용한다.
6. URI의 마지막에 '/'를 적지 않는다.
7. '-' 사용이 가능하다. (가끔)
8. '_' 사용하지 않는다. (가독성 문제)
9. 소문자로만 작성한다.
10. 확장자를 작성하지 않는다. > 자원명으로 끝나기 때문(확장자 의미 X)

 

■ 새 프로젝트 생성

- New > Spring Legacy Project > Spring MVC Project > RESTfullTest > com.test.rest > Finish

 

 

■ 기초 환경 셋팅

  • https://github.com/pinnpublic/class/wiki/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%EC%9D%BC%EA%B4%84-%EC%A0%81%EC%9A%A9
 

스프링 프로젝트 일괄 적용

수업. Contribute to pinnpublic/class development by creating an account on GitHub.

github.com

 

■ 파일 생성

com.test.controller > TestController.java

com.test.domain > BoardDTO.java

 

■ 사용 ex)

  • TestController.java
@RestController
public class TestController {
	
	@GetMapping("/m1.do")
	public BoardDTO m1() {
		
		BoardDTO dto = new BoardDTO();
		
		dto.setSeq("1");
		dto.setSubject("제목1");
		dto.setContent("내용2");
		dto.setRegdate("2023-06-23");
		dto.setId("hong");
		
		return dto;
	}
	
}

 

■ 클라이언트 툴 다운로드

  • Insomnia
  • https://insomnia.rest/download
 

Download

Download Insomnia the best API Client for REST, GraphQL, GRPC and OpenAPI design tool for developers

insomnia.rest

 

★ CRUD 작업

1. 글쓰기

글쓰기
//1. http://localhost:8091/rest/board
//2. POST
//3. return int

//REST 서비스 > 테스트 > 클라이언트 툴(Postman, Insomnia, VSCode, 크롬 확장 프로그램 등..)

@PostMapping("/board")
public int add(BoardDTO dto) {

    int result = mapper.add(dto);

    return result;

}
  • 사용 

  • json 작성
{
	
	"subject": "제목입니다.",
	"content": "내용입니다.",
	"id" : "dog"
	
}

 

2. 목록 가져오기

//목록 가져오기
//1. http://localhost/rest/board
//2. GET
//3. List<DTO> -> JSON 변환
@GetMapping("/board")
public List<BoardDTO> list() {

    return mapper.list();
}
  • 사용

 

3. 요소 수정하기

//요소 수정하기
//1. http://localhost/rest/board/302
//2. PUT or PATCH
//3. return int

@PutMapping("/board/{seq}") //경로 변수(PathVariable)
public int edit(@RequestBody BoardDTO dto, @PathVariable("seq") String seq) {

    dto.setSeq(seq);

    return mapper.edit(dto);
}
  • 사용

  • json
{
	
	"subject" : "수정한 제목입니다.",
	"content" : "수정한 내용입니다."
	
}

 

4. 삭제하기

//삭제하기
//1. http://localhost/rest/board/306
//2. DELETE
//3. return int

@DeleteMapping("/board/{seq}")
public int del(@PathVariable("seq") String seq) {


    return mapper.del(seq);
}
  • 사용

 

5. 검색하기

//검색하기
//1. http://localhost/rest/board/3
//2. GET 
//3. return DTO
@GetMapping("/board/{seq}")
public BoardDTO get(@PathVariable("seq") String seq) {

    return mapper.get(seq);
}
  • 사용

728x90

'Spring' 카테고리의 다른 글

Spring Boot STEP 1 - 기초 셋팅 및 실행  (0) 2023.06.26
Spring STEP 15 - WEB SOCKET  (2) 2023.06.23
Spring STEP 13 - Board 2  (0) 2023.06.22
Spring STEP 13 - Board  (0) 2023.06.21
Spring STEP 12 - Spring Security 2  (0) 2023.06.21
'Spring' 카테고리의 다른 글
  • Spring Boot STEP 1 - 기초 셋팅 및 실행
  • Spring STEP 15 - WEB SOCKET
  • Spring STEP 13 - Board 2
  • Spring STEP 13 - Board
IT의 큰손
IT의 큰손
IT계의 큰손이 되고 싶은 개린이의 Log 일지
Developer Story HouseIT계의 큰손이 되고 싶은 개린이의 Log 일지
IT의 큰손
Developer Story House
IT의 큰손
전체
오늘
어제
  • 분류 전체보기 (457)
    • 정보처리기사 필기 (18)
    • 정보처리기사 실기 (12)
    • 정보처리기사 통합 QUIZ (12)
    • 빅데이터 (11)
    • 안드로이드 (11)
    • 웹페이지 (108)
    • 자바 (49)
    • SQLD (3)
    • 백준 알고리즘 (76)
    • 데이터베이스 (41)
    • 깃허브 (2)
    • Library (14)
    • Server (31)
    • 크롤링&스크래핑 (3)
    • Spring (23)
    • Vue.js (13)
    • React (27)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • Developer Stroy House

인기 글

태그

  • 데이터베이스
  • DBA
  • 프론트엔드
  • 자바
  • jquery
  • 코딩테스트
  • 정보보안전문가
  • it
  • css
  • 정보처리기사
  • 웹개발
  • 알고리즘
  • 정보처리기사필기
  • React
  • html
  • 백엔드
  • IT자격증공부
  • ajax
  • IT개발자
  • 앱개발자
  • DB
  • JavaScript
  • 웹개발자
  • 웹페이지
  • 개발블로그
  • java
  • 백준
  • IT자격증
  • jsp
  • 개발자

최근 댓글

최근 글

Designed By hELLO
IT의 큰손
Spring STEP 14 - RESTful Service
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.