728x90
반응형
개발을 하다보면 API를 많이 접할 수 밖에 없다. FE든, BE든.. 그냥 Restful API 대충 안다고 생각하고 개발만 했었는데 백엔드 인턴 면접 때 실제로 이렇게 물어보니까 답을 할 수가 없었다😂. 이런 공부는 어떻게 해야할까. 일단 이 질문에 답해보자.
GET은 가져오는 것이고 POST는 수행하는 것이다.
즉 get은 select문과 비슷하고, post 는 데이터베이스에 뭔가 값을 저장하던가 확인할 때 사용한다. 자세한 차이는 아래 표에 비교해두었다.
GET | POST | |
히스토리 | parameter가 URL 일부 => 브라우저 기록에 남음 | parameter 브라우저에 저장 x |
북마크 | URL로 인코딩되므로 북마크 가능 | 요청 parameter가 req body 에 포함. 북마크 x |
parmeter | 전송 가능, URL에 2K 이하로 넣는 게 안전 querystring으로 url 뒤에 ? 뒤에 붙음. | 서버에 파일 업로드 등을 포함해서 가능 |
form data type | ASCII 문자 | 제한 없음 |
해킹 | 쉬움 (script kiddles) | GET 보다 해킹 어려움 |
사용 | 민감한 정보 전송 시 사용하지 말 것 | 비밀번호 전송 등에 사용 가능 |
캐시 | Idempotent하므로 캐시된다. 같은 요청 여러번 해도 항상 같은 응답 | Not idempotent. 캐시 안됨. 같은 요청 여러번해도 다른 응답 올 수 있다. |
visibility | 주소창 url에 다 보임. | URL에는 안보임. |
encode-type | application/x-www-form-urlencoded | multipart/form-data, application/x-www-form-urlencoded 등.. |
버튼 / resubmit | GET 요청 다시 실행될 때 캐시 존재. 다시 submit 안됨. | 브라우저가 보통 alert를 띄움. |
즉 조회할때 get을 사용하면 캐싱되고, query-string을 통해 파라미터가 전달되며, 데이터는 header에 존재하고, 데이터가 url에 보인다. 하지만 post를 사용하면 캐싱이 안되고 조회할 때마다 다른 값이 올 수 있다. 또한 body에 데이터가 담겨있고, 따라서 url에 데이터가 보이지 않는다.
728x90
반응형
'Develop > 백엔드 & 서버' 카테고리의 다른 글
Javascript는 비동기를 어떻게 처리해 - 동작 원리 (0) | 2021.01.19 |
---|---|
CORS 이슈 해결하기 (0) | 2021.01.18 |
3. Heroku 에 MySQL 생성 & async await (2) | 2020.03.01 |
2. Express, Heroku 라우팅 빌드해서 배포 (0) | 2020.02.27 |
1. Heroku 에 Node Express 올리기 (0) | 2020.02.26 |
댓글