표현이 느리게 생성 된 리소스 집합이 있습니다. 이러한 표현을 구성하는 계산은 서버 부하, 특정 리소스 및 달의 위상에 따라 몇 밀리 초에서 몇 시간까지 걸릴 수 있습니다.
리소스에 대해 수신 된 첫 번째 GET 요청은 서버에서 계산을 시작합니다. 계산이 몇 초 내에 완료되면 계산 된 표현이 반환됩니다. 그렇지 않으면 202 "Accepted"상태 코드가 반환되고 클라이언트는 최종 표현을 사용할 수있을 때까지 리소스를 폴링해야합니다.
이 동작의 이유는 다음과 같습니다. 결과가 몇 초 내에 사용 가능하면 가능한 한 빨리 검색해야합니다. 그렇지 않으면 언제 사용할 수 있는지는 중요하지 않습니다.
제한된 메모리와 엄청난 양의 요청으로 인해 NIO 나 긴 폴링은 옵션 이 아닙니다. 즉 , 거의 충분한 연결을 열어 둘 수 없으며 모든 요청을 메모리에 넣을 수도 없습니다. 한 번 "몇 초" 통과되면 초과 요청을 지속합니다). 마찬가지로 클라이언트 제한으로 인해 완료 콜백을 대신 처리 할 수 없습니다. 마지막으로, 하나가 POST를 수행하는 "공장"리소스를 만드는 데 관심이 없습니다. 추가 왕복은 우리가 원하는 것보다 더 많이 조각 별 실시간 제약 조건을 실패한다는 것을 의미하기 때문입니다. 캐싱의 이점).
GET 요청에 대한 응답으로 202 "Accepted"상태 코드를 반환하는 것에 대해 논란이 있다고 생각합니다. 실제로는 본 적이 없으며 가장 직관적 인 사용은 안전하지 않은 메서드에 대한 응답이지만 특별히 낙담시키는 것을 발견했습니다. 또한 나는 안전과 멱 등성을 모두 보존하고 있지 않습니까?
그렇다면 사람들은이 접근 방식에 대해 어떻게 생각합니까?
편집 : 나는 이것이 브라우저가 아니라 소위 비즈니스 웹 API에 대한 것이라고 언급해야합니다.
202
. 실제로 거의 사용되지 않는 것은 IMHO입니다. 왜냐하면 브라우저 / 사용자-에이전트 상호 작용에 더 익숙해지기 때문에 적절한 상태 코드에 관심이있는 웹 개발자가 거의 없기 때문에 a202
가 눈에 띄는 단서를 제공하지 않는 경우에200
만족합니다. ..).