문제

웹 서비스를 사용하면 여러 서비스 호출을 하나의 메시지로 일괄 처리하여 원격 호출 수를 줄이는 것이 좋습니다.RESTful 서비스로 이를 수행할 수 있는 방법이 있습니까?

도움이 되었습니까?

해결책

REST에서 일괄 요청이 어떻게 의미가 있는지 알 수 없습니다.REST 기반 서비스의 URL은 수행할 작업과 이를 수행할 데이터를 나타내므로 일괄 요청을 수행하면 개념 모델이 심각하게 손상됩니다.

동일한 데이터에 대해 동일한 작업을 여러 번 수행하는 경우는 예외입니다.이 경우 요청 매개변수에 대해 여러 값을 전달하거나 본문에서 이 반복을 인코딩할 수 있습니다(그러나 이는 실제로 PUT 또는 POST에서만 작동합니다).Gliffy REST API는 다음을 통해 동일한 폴더에 여러 사용자를 추가하는 것을 지원합니다.

POST /folders/ROOT/the/folder/name/users?userId=56&userId=87&userId=45

이는 본질적으로 다음과 같습니다.

PUT /folders/ROOT/the/folder/name/users/56
PUT /folders/ROOT/the/folder/name/users/87
PUT /folders/ROOT/the/folder/name/users/45

다른 의견 작성자가 지적했듯이 GET의 페이징 결과는 요청 매개변수를 통해 수행될 수 있습니다.

GET /some/list/of/resources?startIndex=10&pageSize=50

만약에 REST 서비스가 이를 지원합니다.

다른 팁

실제로 일괄 처리가 필요한 경우 Http 1.1은 응답을 받기 전에 여러 요청을 보낼 수 있는 HTTP 파이프라이닝이라는 개념을 지원합니다.확인 해봐 여기

나는 대럴 밀러의 의견에 동의합니다.HTTP는 이미 HTTP 파이프라이닝을 지원하고 HTTP는 연결 유지를 지원하므로 새 요청을 서버 등에 스트리밍하기 전에 응답을 기다릴 필요가 없도록 동일한 소켓에서 여러 HTTP 작업을 동시에 스트리밍할 수 있습니다.

따라서 HTTP 파이프라인 및 연결 유지를 사용하면 동일한 기본 REST API를 사용하면서 일괄 처리 효과를 얻을 수 있으므로 일반적으로 서비스에 다른 REST API가 필요하지 않습니다.

Astoria 팀은 여러 부분으로 구성된 마임을 효과적으로 활용하여 일괄 통화를 보냈습니다.다중 부분 메시지는 원자적 작업의 의도를 추론할 수 있다는 점에서 파이프라인과 다릅니다.오히려 우아한 것 같습니다.

물론 방법이 있지만 서버 측 지원이 필요합니다.내가 아는 모든 방법론에 맞는 마법 같은 단일 크기는 없습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top