목차
- putMapping
- RestfulAPI
- url naming의 protocol
- update in CRUD
PutMapping
Query문뿐만 아니라 Where 절이 JPA에 내장되어있으며
(찾을 것들을 찾기 위해서)
주소창에서 값을 받아오기 위해서 @Pathvariable를 써야 합니다!!
예시를 들면
@PutMapping("/test/{id}") 같은 Mapping에서 id 값을 가져오기 위해서
(@Pathvariable int id) 이렇게 써줘야 합니다.
변경할 데이터는 body로 데려간다는 뜻인데요
Where을 Id를 잡을 것들을 path밸류로 넣고
그리고 수정할 것을 (raw, json, x-www-form등) body에 들고 갑니다.
예를 들면
테이블에 id username password
Id가 1인 것들 수정하고 싶다면
id값과 username값을 전달시키야 합니다.
*
Body에 다 실어도 됨
*
Restful API 주소 설계 방식
Restful 이란
서로 프런트엔드와 백엔드가 서로 협업을 할 때 페이지 주소를 지맘대로 적으면 헷갈리게 되기 때문에 일관성이 없어서
서로 협업하기 힘듭니다. 그렇기에 서로 주소 설계를 Restful 방식으로 약속한 것입니다.
공공데이터 같은 큰 사이트들은 Resful API 주소 설계 방식을 쓰지 않을 수 없습니다.
예를 들어 수질데이터 수자원공사에서, restful Controller를 잡아서 응답해주는 Server를 만들어 준다면
표준을 지켜서 만든다는 뜻입니다. 많은 사람들이 사용하는 서비스의 경우에 Resful API 주소 설계 방식을
쓰지 않는다면 표준이 없기 때문에 개발을 할 때 많은 데이터를 처리하기 어려워집니다.
전 국민이 들어오는 서비스 같은 경우!!! 표준을 만들어서 사용하기 위해 Restful API를 사용합니다!!
*
Http Restful을 만들어서 get post put delete 등 을 구현
주소는 명사로 만들고
프로토콜 방식은 동사로 만들자!
Mapping(“/”)해서 바디에 넣자
인증 빼고는 주소에 테이블 값을 넣었음
*
https://sanghaklee.tistory.com/57
UPDATE in CRUD
create에서 save를 할 때 user 객체를 넣었었는데 이렇게 바로 update 하게 되면 null값이 들어가게 됩니다.
null값이 들어가는 이유는 이렇게 하면 현재 repository에 있는 것을 가지고 와서 저장하고 다시 save 하면 지금 password와 email을 지정해주지 않아서 null값 상태로 들어가게 됩니다.
그러나 우리는 userRepository에 있는 것들을 가지고 와서 (@Query로 다 처리가 되어서 가져오게 됨) 다시 User userEntity(userEntity는 DB에서 들고 왔다는 의미) 형태의 인스턴스에 넣습니다.
그리고 그 넣은 것의 메서드 setPassword와 setEmail을 <이 메서드는 user안에 있는 값을 수정하는 user객체에 들어있는 메서드임> 사용하여 그 안에 (유저가 다시 입력한 User user 매개변수 안에 있는 것) user의 요청 값을 넣습니다.
그렇게 하고 userRepository의 save 메서드(jpa 내장)를 사용하여 DB에 저장을 시킵니다.
postman으로 확인해보면
DB에 있는 값이 봐 뀌는 것을 확인할 수 있습니다.
기존의
password - 1234
email - sarr@nate.com
update 후
password - 12345
email - sarr@naer.com
로 바뀐 것을 확인할 수 있습니다.
Tips
프로토콜 안 지켜도 되지만 지키면 좋음
(소문자로 주소를 구성하거나, 명사로 주소를 구성)
'BackEnd > Spring' 카테고리의 다른 글
[Spring][8]Login Practice[로그인 실습] (0) | 2021.07.04 |
---|---|
[Spring][7]Join practice[회원가입 실습] (0) | 2021.07.01 |
[Spring][5]TCP/JPARepository for CRUD[TCP통신과 JPA를 이용한 Repository 설계] (0) | 2021.06.30 |
[Spring][4]DB Connection Practice[DB 연결 실습] (0) | 2021.06.30 |
[Spring][3]Dependency Injection[의존성 주입] (0) | 2021.06.28 |