GET / POST 에 관하여 (feat.둘 중 하나만 쓰면 안 되나?)

우진·2023년 7월 25일
post-thumbnail

1. 이 글을 쓰게 된 계기

GET 방식과 POST 방식 둘 중에 POST 로만 보내면 데이터가 안 보이고

보안에 취약한 문제도 사라지고 GET 으로 오는지 POST 로 오는지

검증을 안 해도 되니까 더 로직에 이득이 아닐까 하는 궁금증이 들었다.

그래서 찾아봤다.

2. GET 방식의 장점

  • 2.1 간편성

    데이터를 URL 에 포함하여 전송하기 때문에 브라우저 주소창에 직접 입력하거나 즐겨찾기에 추가하여 간단하게 요청 할 수 있다.

  • 2.2 캐시 사용

    캐시를 이용하여 이전에 요청한 결과를 재사용할 수 있기 때문에 동일한 요청을 반복적으로 보내지 않아도 된다. (UX 유리)

  • 2.3 가시성

    URL 에 데이터가 노출되어 사용자에게 전송한 데이터를 쉽게 확인할 수 있다.

3. GET 방식의 단점

  • 3.1 보안 취약성

    URL에 데이터가 노출되기 때문에 민감한 정보를 전송할 경우 보안에 취약하다.(ID, PW, 주민번호 등)

  • 3.2 길이 제한

    URL 에 전송할 수 있는 데이터 길이에 제한이 있어서 큰 용량의 데이터를 전송하기 어렵다.
    (대부분의 웹 브라우저는 URL 의 길이를 약 2,048~8,192 문자로 제한하고 있다.)

4. POST 방식의 장점

  • 4.1 보안성

    데이터를 HTTP 메시지의 본문에 포함하여 전송하기 때문에 URL에 데이터가 노출되지 않고, 민감한 정보를 안전하게 전송할 수 있다.

  • 4.2 데이터 길이 제한 없음

    POST 방식은 HTTP 메시지의 본문에 데이터를 포함하기 때문에 데이터 길이에 제한이 없어서 큰 용량의 데이터를 전송할 수 있다.

  • 4.3 상태 변경 가능

    POST 방식은 서버의 상태를 변경하는 용도로 사용될 수 있다.
    예를 들어, 데이터를 삽입, 수정, 삭제하는 작업에 적합하다.

5. POST 방식의 단점

  • 5.1 보안성과 안정성

    POST 방식은 보안적으로 더 안전하지만, GET 방식보다 느리고 무겁다.

  • 5.2 캐시 미사용

    POST 방식은 캐시를 이용하지 않기 때문에 동일한 요청에 대해 반복적으로 요청을 보내야 한다.

  • 5.3 복잡성

    POST 방식은 데이터를 본문에 포함하여 전송하기 때문에 GET 방식 보다 복잡하게 처리해야 하는 경우가 있다.

5. GET 과 POST 두 개를 다 쓰는 이유

결론적으로,
GET 방식은 간단하고 캐시를 이용하여 빠르게 데이터를 조회하는 데에 효과적이지만 보안에 취약하고 큰 용량의 데이터를 전송하기 어려운 단점이 있다.

반면,
POST 방식은 보안성이 높고 큰 용량의 데이터를 전송할 수 있으며, 서버의 상태를 변경하는 작업에 적합하지만 캐시를 이용하지 않고 더 무거운 처리가 필요하다.

  • 결론 -
    동일한 요청 동일한 결과를 보여줘야할 때는 GET 방식을 쓴다. 로직에 더 이득이기 때문.
    따라서 데이터의 보안성과 크기, 전송 목적에 따라 GET과 POST 를 적절하게 선택하여 사용해야 한다.

6. 결론

역시 따로 분리를 해놓은데에는 다 이유가 있었다.
GET 방식은 캐시를 사용해서 이미 한 번 받아 놓은 데이터는 로직 깊숙히 들어가지 않아도 되므로, 성능 향상에 이점이 있다는 점.
GET 을 사용하여 통신을 해야할 때와 POST 를 사용하여 통신을 해야할 때가 있다는 점을 배웠다.

profile
지니입니다

2개의 댓글

comment-user-thumbnail
2023년 7월 25일

좋은 정보 얻어갑니다, 감사합니다.

1개의 답글