rest 서버 시작

Hwawon_2·2022년 4월 18일
0

먼저
prj_rest_2로 돌려지는지 확인


돌렸을때 이렇게 나오면 맞음!

com.ict.controller - 우클릭 new - class - TestController 생성

@RestController 는 일반 컨트롤러와는 달리 이 컨트롤러가 rest방식으로 작동할것이라는 선언을 하는 어노테션입니다.
이제, 이 서버는 .jsp파일을 필요로 하지 않으며, 단순히 결과는 문자열, xml문서,json문서만을 화면에 표시합니다.
(클래스 위에 붙인 RequestMapping은 해당 컨트롤러의 공통된 진입주소를 설정해줍니다. )


단순 문자열을 다뤄보겠습니다.
메서드가 리턴은 String으로 하면 그 문자를 화면에 표룽할 뿐입니다.
거기에 더해 F12를 눌러 개발자 도구를 열어 Network탭으로 이동한 다음 다시 새로고침을 하면 위와 같은 서버가 전송한 데이터에 대한 정보가 나와있습니다.

com.ict.controller / 우클릭 package / com.ict.domain 생성
com.ict.domain / 우클릭 new / class / TestVO 생성

RestController에서 객체 (vo등)은 전부 json으로 변환됩니다.
먼저 테스트용 vo를 생성해보겠습니다.

TestController에서 방금 생성한 TestVO를 리턴하는 메서드를 생성하겠습니다.
TestController

실행하면

500에러가 뜹니다.
이유는 json타입을 반환하기 하지만 변환하는 기능이 바로 작동하지 않기 때문입니다.
따라서, mvnrepository에서 jackson-databind 라이브러리를 새로 pom.xml에 추가 해줍니다.
jackjon-dataformat-xml 도 검색해서 추가해주면 xml형식으로도 같이 처리 할 수 있습니다.
pom.xml

그리고 다시 실행 해보면
http://localhost:8181/test/sendVO (xml 형식)

http://localhost:8181/test/sendVO.json (.json형식)

나오는 것을 확인할 수 있습니다.

json타입을 리턴했음을 명시해주고 있다.

listVO로 처리하는 법
TestController

실행하면 +f12

json으로 나오는거 확인할수 있음
(대괄호 안에 하나하나의 중괄호 데이터로 묶어서 주고 있음)
이렇게 전달받은 객체 리스트 위와 같이 대괄호로 감싸진 json객체의 집합으로 표시됩니다.

json처럼 표현되는 Map자료형 역시 그대로 표현할 수 있습니다.

실행하면

(맵 같은 경우는 중괄호가 아니라 대괄호를 쓴다. )
객체 내부의 객체로 표현됩니다.
대괄호로 동등하게 나열하는 형태가 아님에 유의

====

서버는 요청을 처리하며, 결과로 코드를 함께 전송합니다.
그리고 ResponseEntity를 사용하면 개발자가 의도한 타이밍에 의도한 응답을 사요자에게 전달할 수 있습니다.

이제 접속하는 족족 400에러를 발생시키는 ResponseEntity<>를전송해보겠습니다.

HttpStatus.BAD_REQUEST와 같이 HttpStatus 객체를 ResponseEntity객체의 생성자로 넣어 return구문에 제공하면 됩니다.

실행하면

정확한 주소로 접속했음에도 불구하고 400에러가 나는걸 확인 할 수 있습니다.
(마치 에러처리를 하듯 상황에 맞는 에러를 전달하면 됩니다. )
new ResponseEntity<>(HttpStatus.BAD_REQUEST);
ㄴ> 익명클래스

메세지만 전달할 수 있는것은 아닙니다.
에러가 발생했음에도 불구하고, 데이터를 동시에 전달해야 하는 경우도 있는데 ResponseEntity 객체를 생성할때 파라미터를 2개 넣어주면 됩니다.

실행하면

데이터는 보여주며 404에러를 발생시킬수도 있습니다.
보통 호출한쪽에 에러의 원인과 함께 원인데이터를 제공할때 사용합니다.

===
rest 방식 개발
get - 데이터 조회
post - 데이터 삽입
put - 데이터 수정
delete - 데이터의 삭제
URL부터 시작해 모든 부분을 REST방식으로 구성해 댓글비스를 개발하겠습니다.

==
oraclel를 켜 댓글을 위한 테이블을 작성해줍니다.
댓글은 글과 무조건 연동되기 때문에 이를 감안해, 외래 키까지 걸어주도록 하겠습니다.
쿼리문을 실행해 테이블을 생성후, SpringBoardPrj로 옮겨 작성합니다.

다시 SpringBoardPrj 게시판 프로젝트로 돌아와주시고
domain에 이제 리플 관련 정보를 처리할 수 있는 VO를 생성합니다.
SpringBoardPrj - com.ict.domain / 우클릭 new / class / ReplyVO 생성
ReplyVO

com.ict.mapper / 우클릭 new / interface / ReplyMapper.java 생성
com.ict.mapper / 우클릭 new / interface / ReplyMapper.xml 생성

ReplyMapper.java

ReplyMapper.xml

위에 작성하고

쿼리문 작성해주면 됩니다.

com.ict.service / 우클릭 new / interface / ReplyService.java 생성

com.ict.service / 우클릭 new / class / ReplyService.Impl.java생성

ReplyService.java

(ReplyService.java는 com.ict.mapper를 복사하면됨.)
ReplyService.Impl.java

com.ict.controller / 우클릭 / new / class / ReplyController.java 생성
컨트롤러가 기능을 사용할 수 있도록 서비스 객체도 내부에 생성합니다.

상단의 작성해주고 @RequestController(화면단이 없음)

컨트롤러에 대한 rest 방식 요청을 하기위해 크롬창의 메뉴 -> 도구 -> 더보기 -> 확장프로그램에 들어가서
메뉴바를 열어 좌측하단에 Chrome웹 스토어를 열고 rest client를 검색후 Y.A.R.C를 클릭해 다운받아 줍니다. (고정도 해줌)

어떤 메서드로 요청할지를 정할수 있어서 기존의 get, post외에도 put/patch,delete요청이 가능합니다.

다시 컨트롤러로 와서 registger를 추가해줍니다.

post방식의 글 추가 패턴은 consumes는 전달할 데이터의 형태를 저장하는것으로 json인 경우 위와 같이 적습니다.
priduce 역시 json 데이터 처리시 위와 같이 작성합니다.

profile
코딩 일기장

0개의 댓글