Spring(day-11) Restapi 사용

김성국·2023년 5월 15일
0
post-custom-banner

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이 뜬다.
post-custom-banner

0개의 댓글