IT수업/STS3

IT 수업 20주차 (131) 비동기방식

워제하 2024. 5. 8. 17:09

 

● HTTP GET 메서드는 서버로부터 특정한 리소스를 가져오도록 요청해주는 메서드이다. 오로지 데이터를 가져올 때만 사용해야 하는 것이다. (데이터의 변형이 없다.)

 

HTTP POST 메서드는 서버로 데이터를 전송하여 리소스를 추가하거나 생성하기 위해 사용하는 메서드이다. GET 메서드와 반대로 요청 Header의 Content-Type에 컨텐츠 타입을 명시하며, HTTP 패킷의 Body에는 데이터를 담아 서버로 전송한다. (보통 웹에서는 JSON 형식으로)

 

HTTP PUT 메서드는 요청 페이로드(Payload, 사용에 있어서 전송되는 데이터)를 사용해 새로운 리소스를 생성하거나, 대상 리소스를 나타내는 데이터를 대체한다.(주로 Update기능에 사용)

 

HTTP PUT 메서드는 문서 전체의 완전한 교체만을 허용하지만, PATCH 메서드는 PUT 메서드와 달리 부분적인 교체를 할 때 사용하는 메서드이다. 또한 PUT은 새로운 자원을 생성하지만, PATCH는 새로운 자원을 생성하진 않는다.

 

- PUT과 POST의 차이는 멱등성으로, PUT 메서드는 멱등성을 가진다. 즉, PUT은 같은 객체를 여러 번 보내도 한 번만 생성되거나 계속해서 같은 값을 보내줄 것이다. (POST 메서드의 경우는 새로운 객체가 보낼 때마다 생성된다.)

 

 

 

 

● 비동기 POST ADD

rest.jsp에 비동기 post memo add를 작성해준다.

 

 

 

json 형식으로 바꿔서 전달하기위해 코드를 추가로 작성해준다.

 

 

MemoRestController.java에서 값을 넣으면 post되도록 코드를 작성한다.

 

 

 

실행해서 값을 넣어보면 true 라고 출력이 된다.

 

workbench에도 값이 들어간 것을 확인 할 수 있다.

 

 

 

MemoRestController에서 add가 성공하면 성공했다고 실패했으면 실패했다고 알리는 return을 작성한다.

 

 

실행시켜 기존에 있던 id값을 넣으면 BAD_GATEWAY가 뜨면서 실패하게 된다.

 

 

기존에 없던 id값을 넣으면 post add가 됐다고 콘솔창에 출력된다.

 

 

 

한글코드 깨지는 것은 뒤에 .getBytes("UTF-8")을 붙여주면 해결된다.

 

 

 

 

● PUT

rest.jsp에서 작성해준다.

 

 

 

 

● PATCH

rest.jsp에서 patch도 작성해준다.

 

 

 

둘다 주석처리하고 버튼을 누르면 클릭됐다는 문장이 출력되면서 잘 작동되는 것을 확인 할 수 있다.

 

 

 

 

 

 

 

 

MemoRestController에서 PutMapping을 작성하고 

 

rest.jsp로 와서 header와 param 그리고 uri를 추가해 매핑시켜준다.

 

프로젝트를 실행시켜 값을 넣고 전송버튼을 누르면 콘솔창에 해당 값이 출력되는 것을 확인 할 수 있다.

 

 

 

 

Patch도 마찬가지로 MemoRestController에서 PatchMapping을 작성하고 

 

rest.jsp로 와서 header와 param 그리고 uri를 추가해 매핑시켜준다.

 

 

patch 역시 프로젝트를 실행시켜 값을 넣고 전송버튼을 누르면 콘솔창에 해당 값이 출력되는 것을 확인 할 수 있다.

 

 

 

 

 

 

이번에는 put과 patch를 수정(update) 해볼 것이다.

 

MemoRestController에서 수정하는 코드를 작성해준다.

 

 

그리고 MemoServiceImpl.java에서 modifiedMemo를 만들어준다.

 

 

MemoMapper.java에서 update에 throw해주고

 

 

MemoRestController에서 isUpdate를 만들어준다.

 

 

빨간 줄이 뜨면 try catch로 예외를 묶어주고 코드를 추가로 작성해준다.

 

 

 

프로젝트를 실행시켜 put을 수정해본다.

 

 

 

 

이번에는 patch를 수정해본다.

 

 

 

 

● DELETE

rest.jsp에서 delete를 작성해준다.

 

그리고 MemoRestController에서 delete를 id에 연결해준다.

 

 

 

 

memoServiceImpl을 가져와서 remove해주기 위해 id와 연결한다.

 

빨간줄을 눌러 create해주면 MemoServiceImpl로 간다.

 

 

 

MemoService

 

 

MemoRestController에서 try catch로 묶어 해결해준다.

 

실행하면 해당 id의 값이 사라진 것을 확인 할 수 있다.

 

 

 

 

● SELECT

rest.jsp에서 axios-block의 delete 밑에 select를 하나 만들어 준다.

 

 

그리고 밑으로 내려와 비동기처리할  select를 작성해준다.

 

MemoRestController에서 getMapping해준다.

 

그리고 getAllMemo 함수를 create해준다.

 

 

그리고 getAllMemo는 throws 해준다.

 

 

MemoMapper.java에서 동적쿼리함수를 만들어 준다.

 

 

MemoMapper.xml로 가서 GetAllMemo를 만들어 준다.

 

 

MemoServiceImpl에서 만든 getAllMemo를 GetAllMemo로 리턴해주는 코드를 작성해준다..

 

 

MemoRestController로 가서 성공할시 리턴하는 코드를 작성해준다.

 

 

 

그리고 실행하면 그냥 전송 버튼을 누르게 되면 전체 리스트가 출력이 된다.

 

 

이번에는 해당 값에 해당하는 조회를 하기 위해 MemoMapper.xml에서 trim과 choose를 사용해서 작성한다.

 

 

실행하면 해당 id와 text가 동시에 들어가는 값만 출력되는 것을 볼 수있다.

(id 값만 넣으면 text값이 비워져있기 때문에 전체 조회 된다.)

 

 

 

 

 

 

 

 

 

 

 

참조 : https://velog.io/@dyunge_100/Spring-Thread-Pool