Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

REST의 parameter를 POST는 body에, GET은 path에 넣는 이유가 뭘까요? #16

Open
youn9k opened this issue Jan 4, 2025 · 4 comments

Comments

@youn9k
Copy link
Collaborator

youn9k commented Jan 4, 2025

  • GET, POST 메서드의 차이점을 설명한다.
  • path의 브라우저 캐싱, 보안성, URL 길이 등을 예를 들어 설명한다.
@hsw1920
Copy link
Owner

hsw1920 commented Jan 6, 2025

Q. 파라미터를 GET은 path에, POST는 body에 포함시키는 이유에 대해 말씀해주세요.
A.
GET 요청의 경우 서버에서 특정 리소스 조회를 위해 path 파라미터를 통해 리소스를 식별하고 query 파라미터를 통해 필터링, 정렬 등의 검색 조건을 포함합니다.
GET 요청은 리소스 조회가 목적이므로 body를 보내지 않는 것이 보편적입니다.
반면, POST 요청의 경우 서버에 새로운 리소스를 생성하거나 기존 리소스를 업데이트하기 위해 사용됩니다. 따라서 GET 요청에 비해 복잡한 데이터나 대량의 데이터 전송될 수 있기 때문에 이를 body에 담아 보내게 됩니다. 또한, URL에는 길이 제한이 있고, 개인정보와 같은 민감한 데이터를 URL Path에 포함시 브라우저 히스토리에 로그, 캐싱될 수 있기 때문에 body에 담아 보내게 되면 상대적으로 보안에 유리한 측면도 있습니다.

답변의도

  • GET, POST 요청의 특징을 설명하고 이와 연관지어 설명한다.

  • 키워드: 복잡한 데이터, URL 길이제한, 보안

  • 정리

@Kiyoung-Kim-57
Copy link
Collaborator

우선 두 메서드는 목적이 다릅니다.
GET 메서드는 자원을 조회하는 목적이기 때문에 자원을 식별하거나 필터링할 수 있는 정보를 담아내야 하는데 이는 URL path에 들어가는 것이 적합합니다.
반면 POST의 경우 서버에 자원을 생성하거나 변경할 때 사용되는데 이 때 GET 보다 좀 더 복잡하고 큰 정보를 담아낼 필요가 있습니다. 그래서 POST 요청에서 클라이언트가 서버로 보내는 데이터는 더 복잡하고 큰 데이터를 담을 수 있는 body에 담게 됩니다.

@0Hooni
Copy link
Collaborator

0Hooni commented Jan 6, 2025

REST API에서 GET과 POST 요청의 파라미터 전달 방식이 다른 이유는 각 HTTP 메서드의 목적과 특성으로 인한 차이입니다.

GET 요청은 주로 데이터를 조회하기 위해 사용되며, 파라미터를 URL의 경로나 쿼리 스트링에 포함시켜 리소스를 명확히 식별할 수 있습니다.

반면에 POST 요청은 새로운 데이터를 생성하거나 서버의 상태를 변경하기 위해 사용되며, 파라미터를 요청의 Body에 여러 형태의 데이터 타입으로 포함시켜 대용량의 데이터를 전송하는데 용이할뿐더러 보안적으로도 해당 데이터가 직접적으로 들어나지 않습니다.

그렇기에 각 요청에서 파라미터를 전달하는 방식이 다릅니다.

@youn9k
Copy link
Collaborator Author

youn9k commented Jan 6, 2025

REST의 parameter를 POST는 body에, GET은 path에 넣는 이유가 뭘까요?

REST API는 HTTP 프로토콜을 기반으로 한 통신 방식이기 때문에, HTTP 메소드의 목적과 역할에 따라 파라미터를 전달하는 방식이 다릅니다.

GET 메소드는 리소스를 조회하는 것이 목적이기 때문에, 파라미터를 URL에 포함하면 어떠한 리소스를 조회하는지 명확하게 표현할 수 있습니다.

POST 메소드는 리소스를 생성하거나 서버에 상태 변경을 요청할 때 사용됩니다.
POST 요청에 넣는 데이터는 GET에서 사용하는 파라미터와 달리 용량이 크고, 보안을 신경써야 합니다.
따라서 길이 제한이 존재하고 보안에 취약한 URL에 넣는 것이 아닌 body에 넣는 것입니다.

답변 의도

  • GET과 POST의 목적을 이해하고 있음을 어필
  • URL에 포함했을 때의 문제점을 알고 있음을 어필(길이제한, 보안)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants