공부방

Rest API 예 본문

스프링

Rest API 예

코딩 화이팅 2023. 4. 26. 14:47

게시판의 글 불러오기

package com.ssafy.board.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.ssafy.board.model.dto.Board;
import com.ssafy.board.model.dto.SearchCondition;
import com.ssafy.board.model.service.BoardService;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import springfox.documentation.annotations.ApiIgnore;

@RestController
@RequestMapping("/api")

public class BoardRestController {
	
	@Autowired
	private BoardService boardService;
	
	//1. 목록을 가져와보자~
	@GetMapping("/board")
	public ResponseEntity<?> list(SearchCondition condition){
		List<Board> list = boardService.getBoardList(); //단순히 전제 조회
		
		return new ResponseEntity<List<Board>>(list, HttpStatus.OK);
	}

검색

SearchCondition.java
package com.ssafy.board.model.dto;

public class SearchCondition {
	private String key = "none";
	private String word;
	private String orderBy = "none";
	private String orderByDir; // JSP 만든 name과 이름을 동일시 해야 알잘로 넣어주더라...

	public SearchCondition() { // 기본생성자는 습관처럼 만들자.
	}

	public String getKey() {
		return key;
	}

	public void setKey(String key) {
		this.key = key;
	}

	public String getWord() {
		return word;
	}

	public void setWord(String word) {
		this.word = word;
	}

	public String getOrderBy() {
		return orderBy;
	}

	public void setOrderBy(String orderBy) {
		this.orderBy = orderBy;
	}

	public String getOrderByDir() {
		return orderByDir;
	}

	public void setOrderByDir(String orderByDir) {
		this.orderByDir = orderByDir;
	}
}
====================================================================
BoardRestController.java
//1. 목록을 가져와보자~
	@GetMapping("/board")
	public ResponseEntity<?> list(SearchCondition condition){
		List<Board> list = boardService.search(condition); //검색 조건이 있으면 그걸로 조회
		
		if(list == null || list.size() == 0)
			return new ResponseEntity<Void>(HttpStatus.NO_CONTENT);
		return new ResponseEntity<List<Board>>(list, HttpStatus.OK);
	}

아무것도 체크 안하고 Send를 보내면 모든 게시글들 출력

상세보기

//2. 상세보기
	@GetMapping("/board/{id}")
	public ResponseEntity<Board> detail(@PathVariable int id){
		Board board = boardService.readBoard(id);
		//만약 사용자가 잘못 보냈다... 처리를 해라 board라고 하는게 null이면 무엇인가 처리를 해봐라잉
		return new ResponseEntity<Board>(board, HttpStatus.OK);
	}

등록

//3. 등록
	@PostMapping("/board")
	public ResponseEntity<Board> write(Board board){
		boardService.writeBoard(board);
		//지금 우리의 게시글은 키가 절대로 중복이 되지 않는다. 그래서 무조건 등록은 될꺼임... 
		//가끔가다가 혹여나 여기말고 다른곳에서 문제가 발생해서 글이 등록되지 않았다... 
		//DB에 댕겨올때 테이블을 변경하는 작업이라면 무엇인가를 하나 돌려줌... 무엇? 테이블을 건드린 행의 개수가 반환이된다.
		//만약에 0이라면 이거 등록 안된거니까 등록 안됬어요 ㅠㅠ 하고 프론트에게 돌려주어야 겠다.
		//그게 아니라면 잘 등록이 된거니까... OK 보내도 가넝
		return new ResponseEntity<Board>(board, HttpStatus.CREATED);
	}

삭제

//4. 삭제
	@DeleteMapping("/board/{id}")
	public ResponseEntity<Void> delete(@PathVariable int id){
		boardService.removeBoard(id);
		//이것도 마찬가지로 반환값이 1이상이어야 실제로 무엇인가 지워진거지 ... 그게 아니면 지워진건 아니다 
		//이상한 값을 넣어도 그냥 동작을 해버린다.. 그러니 쿼리문을 날리지 못하게 사전에 커팅 해야함.
		//그리고 권한이 있어야만 지우는 거지 지금과 같은 방식은 남의글도 마구잡이로 지울수 있다.
		return new ResponseEntity<Void>(HttpStatus.OK);
	}

GET으로 확인을 해보면

수정

pox.xml
<!-- JSON 데이터를 사용하기 위해서... -->
		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-databind</artifactId>
			<version>2.14.2</version>
		</dependency>
======================================================================
//5. 수정
//	@ApiIgnore
	@PutMapping("/board") //JSON형태의 데이터로 요청을 보내보자
	public ResponseEntity<Void> update(@RequestBody Board board){
		boardService.modifyBoard(board);
		//얘도 마찬가지 이죠 옥헤이?
		return new ResponseEntity<Void>(HttpStatus.OK);
	}

 

'스프링' 카테고리의 다른 글

SpringBoot  (0) 2023.04.27
Swagger/CORS  (0) 2023.04.26
REST API  (0) 2023.04.25
동적쿼리&트랜잭션  (0) 2023.04.21
MyBatis-Spring  (0) 2023.04.20