2013-02-14 2 views
3

현실 세계에서 REst GET 및 POST 아키텍처 철학을 다루는 상황이 있습니다.대용량 메시지 본문을 가진 REst GET 대 POST

나는 원래의 멱등 원이다. 페이로드 (XML의 보험 정책)에 복잡한 데이터 유형이 필요하며 복잡한 비즈니스 로직을 수행하고 프리미엄을 반환합니다. 국가에서는 아무 것도하지 않으므로 본질적으로 멱등수입니다.

REst 통화는 현재 POST입니다. 이것에 대한 타당한 정당화는 메시지 본문이 크고 인터넷 탐색기로 떨어지고 지저분해질 가능성이 있습니다. 그러나, 그것은 또한 멱등수이며 근본적으로 GET Vs POST를 위반합니다.

누구나 전에이 수수께끼에 직면 했습니까? 감사.

GET SHOULD be idempotent 정의 무슨,하지만 아무것도 POST가 멱등하는 것을 금지하지 :

답변

1

동일한 문제가 있으며 해결책이 실용적입니다.

If the form data would contain non-ASCII characters or; 
If the form data set is large. 

내가 다른 예외가 있다고 생각하지만, 지금은 하나를 생각할 수 없다 : 그래서, GET 요청의 한계에 직면 할 때 내 API는 심지어 나무 등을 위해 POST를 사용합니다.

업데이트 : 한 가지 더 예외적으로, 어떤 이유로 든 요청 URL에 매개 변수를 표시하고 싶지 않으면 멱등 원을 위해 POST를 사용합니다.

2

나는 의미가 되돌릴 수 있는지 확실하지 않습니다.

귀하의 경우, POST 방법으로 보내 드리겠습니다. 또한 귀하의 요청에 엔티티가 포함되어 있다면 그 엔티티가 포함될 수 없습니다. GET

0

큰 몸체 GET에 대한 POST 요청을 사용하는 대신 좋은 대안이 있다고 생각되지만 POST 요청은 대개 (역) 프록시에 의해 캐시되지 않는다는 점을 명심해야합니다. 대부분의 HTTP 캐시 (내가 알고있는)는 POST 시체를 객체 캐시 키를 계산할 때 고려하지 않습니다. 계산이 리소스를 많이 사용하는 경우 문제가 될 수 있습니다.

관련 문제