1. Method
- get(조회)
- post(추가)
- put(수정)
- delete(삭제)
CRUD?
C : create
R : read
U : update
D : delete
1-1. get 과 post 의 차이점
간단히...
get은 클라이언트에서 서버로 어떤한 리소스로부터 정보를 요청하기 위해 사용됨. 서버에서 어떤 데이터를 가져와서 보여줄때 사용함
이 경우에는 값이나 내용, 상태등을 바꾸지 않는 경우에 사용
post는 리소스를 생성/업데이트하기 위해 서버에 데이터를 보낼때 사용됨. 서버상의 데이터 값이나 상태를 바꾸기 위해서 사용
게시판을 예로 들자면, 글의 내용에 대한 목록을 보여주는 경우나 글의 내용(detail)을 볼때는 get을 사용, 글의 내용을 저장, 수정할때는 post 사용
Get
요청을 전송할 때 URL 끝에 파라미터로 포함되어 전송되며 이 부분을 쿼리스트링 이라고 함
e.g.) www.example-url.com/resources?name=곽철용&content=신사답게행동해
또한 get 요청은 오로지 읽을때만 사용되고 수정할때는 사용되지 않는다. 데이터 변형 위험 없이 사용할 수 있다는 뜻
- 불필요한 요청을 제한하기 위해 요청이 캐시될 수 있음
- 민감한 내용은 x(파라미터에 내용이 노출 되기 때문에)
- 브라우저에 기록 남음
- 북마크에 추가할 수 있음
- 데이터 길이 제한이 있음
- 요청 성공 시 200 응답 코드를 여러 형식의 데이터와 함께 반환
- idempotent함
Post
데이터를 Body에 담아서 전송함, Body의 타입은 요청 헤더의 Content-Type의 요청 데이터의 타입 표시따라 결정 또한 길이 제한이 없어서 대용량 데이터를 전송할때도 용이함
Post 요청도 개발자 도구 같은 툴로 요청 내용을 확인 할 수 있기 때문에 민감한 데이터는 무조건 암호화를 통해서 전송해야함
- 캐시되지 않음
- 브라우저에 기록 안남음
- 북마크 추가 불가능
- 데이터 길이 제한 없음
- 자원 생성은 201 응답 코드 반환
- idempotent 하지 않음
idempotent(멱등성)
연산을 여러번 하더라도 달라지지 않는 성질
멱등이라는 것은 동일한 연산을 여러 번 수행하더라도 동일한 결과가 나타나야한다
Get 요청이 멱등 한다는 것은 동일한 요청을 여러번 전송해도 동일한 응답이 돌아와야한다는 것이다. 즉 데이터의 상태를 변경시키지 않아야한다.
예를 들어 우리가 게시판을 읽는 조회를 할때 여러번 게시판을 읽으러 들어가도 데이터가 변하지 않는다
반대로 post는 멱등하지 않아서 동일한 연산을 여러번 수행할 때 다른 결과가 나올 수 있다 즉 서버의 상태나 데이터를 변화 시킬 수 있다
예를 들어 게시글을 작성하면 게시글 저장이 되고 게시글을 삭제하면 데이터가 없어지는 경우이다
이처럼 post는 생성, 수정, 삭제에 사용할 수 있지만 수정과 삭제는 PUT과 DELETE가 더 맞는 메서드라고 할 수 있다.
2. 상태 코드
1. 주요 상태 코드
200
OK, 요청이 성공적으로 되었습니다. 정보는 요청에 따른 응답을 반화됩니다
404
서버는 요청받은 리소스를 찾을 수 없습니다. 브라우저에서는 알려지지 않은 URL을 의미합니다.
503
서버가 요청을 처리 할 준비가 되지 않았습니다. 유지보수를 위해 작동이 중단되거나 과부하가 걸린 서버일 수 있습니다.
2. 1번대부터 5번대 상태코드
1xx(정보)
요청 받았으며, 프로세스가 계속 진행합니다
2xx(성공)
요청을 성공적으로 받았으며 인식했고 수용합니다
3xx(리다이렉션)
요청 완료를 위해 추가 작업 조치가 필요합니다
4xx(클라이언트 오류)
요청의 문법이 잘못되었거나 요청을 처리할 수 없습니다
5xx(서버 오류)
서버가 명백히 유효한 요청에 대해 충족을 실패 했습니다.
'IT 연구소' 카테고리의 다른 글
자주 사용하는 쿼리 메서드의 명명 규칙 (0) | 2024.01.10 |
---|---|
api와 REST API (2) | 2024.01.03 |
스프링 부트 gradle-groovy 프로젝트 생성하는 법! (0) | 2023.09.28 |
SOLID 법칙과 스프링 (0) | 2023.09.28 |
자바예제 수정하며 jsp액션 공부하기 (0) | 2023.09.05 |