Restapi
■ @RequestParam
URL에서 파라미터 값과 이름을 함께 전달할때 사용하는 방식이다
- defaultValue : 값이 없을 때 기본적으로 전달하는 방식
- name : uri에서 바인딩할 파라미터 이름
- value : uri에서 바인딩하여 별칭으로 정할 값
- required : 필수적으로 값이 전달되어야 하는 파라미터인지 설정
■ 클라이언트와 서버의 비동기 통신
- Spring에서 비동기 처리룰 하는 경우 @RequestBody, @ResponseBody 사용한다.
웹에서 화면전화(새로고침) 없이 이루어지는 동작들은 대부분 비동기 통신으로 이루어진다.
- 비동기통신을 하기위해서는 client -> server(Request), server -> client(Response) 보낼때 본문에 데이터를 담아서 보내야한. 이 본문이 body이다
- 대표적으로 비동기식 Client -Server 통신을 위해 JSON형식의 데이터를 주고받는 것이다
■ @RequestBody, @ResponseBody
- 클라이언트에서 서버로 필요한 데이터를 요청하기 위해 JSON 데이터를 요청 본문에 담아서 서버로 보내면 서버에서는 @RequestBody을 사용하여 HTTP요펑 본문에 담김 값들을 자바객체로 변화시켜, 객체에 저장한다.
- 서버에서 클라이언트로 응답 데이터를 전송허기 위해 @ResponseBody을 사용하여 자바 객체를 HTTP응답 본문의 객체로 변환하여 클라이언트로 전송한다.
● @RequestBody
- @RequestBody 어노테이션이 붙은 파라미터는 http요청의 본문이 그대로 전달된다.
- XML이나 JSON의 기반의 메시지를 사용하는 요청의 경우에는 @RequestBody 어노테이션은 HTTP요청의 바디내용을 전체를 자바객체로 변환해서 매핑된 메소드 파라미터로 전달해준다.
- GET/POST의 요청의 파라미터라면 @RequestBody을 사용할 일이 없다
● @ResponseBody
- 자바객체를 HTTP요청의 바디내용으로 매핑하여 클라이언트로 전송한다.
- @ResponseBody가 붙은 파라미터가 있으면 HTTP요청의 미디어타입과 파라미터의 타입을 먼저 확인한다.
-HTTP요청의 본문 부분을 통째로 변환해서 지정된 메소드 파라미터로 전달해준다.
-즉, @Responsebody 어노테이션을 사용하면 http요청 body를 자바 객체로 전달받을 수 있다.
1.(Rest)ibrary2
01. 데이터 추가
■ RestLibrary2Controller.java
- json을 주고 받을때는 Map과 형식이 똑같아서 Map으로 주고 받아야한다.
■ insert.html
■ POSTMEN
02.데이터 조회
■ RestLibrary2Controller.java
■ RestLibrary2Repository.java
■ POSTMEN
03.(Rest)Student2
01. 회원가입
■ RestStudent2Controller.java
- BCryptPasswordEncoder이 보안을 위해 해시와 같은 개념이다.
■ POSTMEN
02.검색한 학생조회(이름,번호)
■ RestStudent2Controller.java
■ RestStudent2Repository.java
■ Student2Projection.java
- get을 이용하여 원하고 싶은 정보만 들고오게 하기 위해서 만든 엔티티다.
■ POSTMEN
- 이렇게 email을 조회하면 해당하는 메일에 맞는 아이디와 번호가 나온다.
02.아이디 중복체크
■ RestStudent2Controller.java
- GET은 @RequestBody 쓰지 않는 것이 좋다
■ RestStudent2Repository.java
- 이메일 중복판별 여부를 타입을 long으로 잡았다.
■ POSTMEN
- 이렇게 이메일이 같은 것이 있을 경우 1이 뜨고 없을 경우 0이 뜬다.