-
HTTP Method(2): Get & POST.etc 2019. 11. 27. 14:28
#️⃣HTTP Method: 서버에 요청을 보내는 방법
여러가지 Method가 있지만 데이터 전송방식에는 크게 두 가지 방식이 있다.
➡️GET은 가져오는 것 : Read (Message의 Header부분의 URI에 담아서 전송)
Select 적인 성향
서버에서 어떤 데이터를 가져와서 보여줌, 서버의 값이나 상태를 바꾸지 않는다.
페이지가 존재, URL로 공유가능하다.
Request를 할때, 필요한 데이터를 쿼리스트링에 담아서 전송.
-주소창에 ? 뒤에 Key=Value 형태로 이어져 나온다. &으로 연결한다. (? name=jueun&content=girl) 때문에 길이제한이 있다.
ex- 게시판 리스트, 글보기 기능, 검색 등
➡️POST는 수행하는 것 : Create (Message의 Body에 담아서 전송)
서버의 값이나 상태를 바꾼다. 글쓰기를 하면 글의 내용이 DB에 저장이 되고 수정을 하면 DB값이 수정된다. 이런 경우 POST 사용.
메소드 그 자체이며 페이지 존재하지 않는다. URL 공유 불가
주소창에 보이지 않고 숨겨져서 보내짐. 그러나 암호화하지 않는 이상 보안면에서 GET과 큰 차이가 없다. POST로 더 많은 양 전송가능.
ex- 글의 저장, 회원가입 등
GET / POST 근본적인 의미 차이
- GET은 idempotent(멱등), POST는 non-idempotent하다.
- idempotent(멱등)은 수학용어로 해당 연산을 해도 결과에 변화가 없다는 특성을 표현한다.
- (100 * 1 = 100 이므로 곱셈에대해 1을 멱등원 이라하고, 1을 곱하는 연산이 멱등 연산)
- GET은 해당 요청을 몇번을 수행해도 요청에 대한 결과가 계속 동일하게 돌아오는 것을 의미
- POST는 해당 요청이 수행되면 서버에서 무언가가 변경되고, 동일한 결과가 돌아오는 것을 보장할 수 없음을 의미
- GET을 이용해서 게시판 업로드 기능을 요청한다면, 멱등성 성질을 무시하고 문제 발생 여지가 있다.
Accelerator 사건
웹서핑의 속도를 향상시키기 위해 고안됨. Accelerator가 사용자가 클릭하기 전에 웹사이트의 URL 등을 클릭하여,
이미지 등의 로드 속도를 높이는 방식이다. 그러나 많은 개발자들이 GET과 POST를 구분없이 사용하여 문제가 생김.
Delete같은 곳에도 GET방식을 사용하여 메일이나 게시글이 지워져버림.
출처 :
https://blog.outsider.ne.kr/312
https://velog.io/@pa324/%EA%B0%9C%EB%B0%9C%EC%83%81%EC%8B%9D-HTTP-GETPOST-%EB%B9%84%EA%B5%90
'.etc' 카테고리의 다른 글
regular expression (0) 2019.12.06 자주 마주치는 Error (0) 2019.11.27 HTTP Method(1) (0) 2019.11.27 Oh My Zsh로 VSC에 색상 주기(iTerm) (0) 2019.11.22 Homebrew 설치 (0) 2019.11.22