**이해가 잘 되는 블로그의 글을 포스팅해왔습니다. 나중에도 보기 위해 간략하게 정리해둔 글이니 원본이 궁금할 경우, 맨 밑 출처로 가서 보면 됩니다.
HTTP :
웹상에서 클라이언트 - 서버 간의 요청/응답으로 데이터를 주고 받을 수 있는 통신 프로토콜.
클라이언트 -(http프로토콜이용)-> 서버에게 요청. 서버 -(http프로토콜이용)-> 클라이언트에게 응답.
프로토콜로 사용되는 메소드 : get/post
1. GET :
GET은 서버로부터 정보를 조회하기 위해 설계된 메소드.
요청을 전송할 때 필요한 데이터를 Body에 담지않고, 쿼리스트링을 통해 전송!
**쿼리스트링 : URL의 끝에 ?와 함께 이름과 값으로 쌍을 이루는 요청 파라미터
ex) www.example-url.com/resources?name1=value1&name2=value2 일 때,
파라미터명은 name1, name2. 각각의 파라미터는 value1, value2라는 값으로 서버에 요청을 보냄.
2. POST:
POST는 리소스를 생성/변경하기 위해 설계된 메소드.
전송해야될 데이터를 Http메세지의 Body에 담아서 전송!
GET과 POST의 차이
- 전송 가능한 데이터 양이 차이남. (GET < POST)
- 사용하는 용도가 틀림. GET은 조회, POST는 생성으로 사용
- 웹페이지 조회 시 URL을 통해 해당 홈페이지에 관련된 정보가 필요한데, POST는 요청 데이터가 Body에 담겨있기 때문에 링크 정보를 가져올 수 없음. 반면, GET은 URL에 요청 파라미터를 가지고 있기 때문에 더 디테일하게 페이지를 링크 정보를 가져올 수 있음.
GET은 Idempotent, POST는 Non-idempotent하게 설계되었습니다.
Idempotent(멱등)은 수학적 개념으로 다음과 같이 나타낼 수 있습니다. 수학이나 전산학에서 연산의 한 성질을 나타내는 것으로, 연산을 여러 번 적용하더라도 결과가 달라지지 않는 성질
즉, 멱등이라는 것은 동일한 연산을 여러 번 수행하더라도 동일한 결과가 나타나야 합니다.
여기서 GET이 Idempotent하도록 설계되었다는 것은 GET으로 서버에게 동일한 요청을 여러 번 전송하더라도 동일한 응답이 돌아와야 한다는 것을 의미합니다. 이에 따라 GET은 설계원칙에 따라 서버의 데이터나 상태를 변경시키지 않아야 Idempotent하기 때문에 주로 조회를 할 때에 사용해야합니다. 예를 들어, 브라우저에서 웹페이지를 열어보거나 게시글을 읽는 등 조회를 하는 행위는 GET으로 요청하게 됩니다.
반대로 POST는 Non-idempotent하기 때문에 서버에게 동일한 요청을 여러 번 전송해도 응답은 항상 다를 수 있습니다. 이에 따라 POST는 서버의 상태나 데이터를 변경시킬 때 사용됩니다. 게시글을 쓰면 서버에 게시글이 저장이 되고, 게시글을 삭제하면 해당 데이터가 없어지는 등 POST로 요청을 하게 되면 서버의 무언가는 변경되도록 사용됩니다. 이처럼 POST는 생성, 수정, 삭제에 사용할 수 있지만, 생성에는 POST, 수정은 PUT 또는 PATCH, 삭제는 DELETE가 더 용도에 맞는 메소드라고 할 수 있습니다.
'Development > Android' 카테고리의 다른 글
OAuth2.0 소셜로그인 처리(1) - [Java]카카오 로그인 API ver2 버전(기존코드 버전) (0) | 2021.08.20 |
---|---|
OAuth2.0 소셜로그인 처리(0) - 카카오 로그인 API ver2 버전 (0) | 2021.08.19 |
[안드로이드]Fragment끼리 데이터 전달 (0) | 2020.03.03 |
[MYSQL] AUTO_INCREMENT 값 초기화 (0) | 2020.02.21 |
[안드로이드]HttpURLConnection/getOutputStream() 에러 (2) | 2020.02.18 |
댓글