나는 원칙적으로 매우 간단 백업 서비스를위한 REST API를 만드는거야 : 사용자가 어떤 uid
에 의해 식별됩니다"POST to PUT redirect"로 REST API를 모델링하는 방법은 무엇입니까?
- 을;
- 파일은 일부
fid
로 식별됩니다. 사용자GET
의/backups/<uid>
및 - 이 파일을 다운로드 반환
fid
의 일부 인덱스, 사용자 - 는
/backups/<uid>
에, 사용자POST
SA 파일을 파일을 업로드하고 위치가 파일을 나열 - 을 반환 인덱스에서 하나를 선택하면 이 반환되고 파일이 반환됩니다.
이제 Amazon S3와 같은 서비스에 위임 및 다운로드를 위임하여 서버 트래픽을 크게 줄이고 싶습니다.
만료 된 생성 된 URL에 대한 정규 리디렉션 (301
또는 307
?)을 수행 할 수 있기 때문에 다운로드를 리디렉션하는 것이 문제가되지 않습니다.
하지만 업로드 한 내용은 무엇입니까?
- 사용자
POST
파일로 시작 - 서버 : 나는 이런 식으로 뭔가를하도록 노력하겠습니다 (안 전체 파일을!) , S3에있는 장소를 결정
PUT
에 대한 만료 URL을 생성하고 클라이언트PUT
의 그것을 - 에이 서버가 성공적으로 업로드 통지
- 서버가 물려 받았습니다 URL로 파일을 리디렉션
요점은 모든 것이 가능한 한 사용자에게 투명해야한다는 것입니다.
이 경우 'PUT'에 대한'Location'은 이후에 더 이상 유효하지 않습니까? 보통'PUT'이라면,'GET' 할 수 있기를 기대합니다. –
나는 그런 기대가 없다고 생각한다. 특정 시점 (PUT 직후)에 다른 클라이언트가 특정 자원에 대해 DELETE를 발행 할 수 있습니다. 설명하는 "PUT, GET"시퀀스는 거래 내에서 발생하지 않습니다. –
좀 더 정확히 말하면, PUT 직후에 GET이 PUT 된 엔터티를 반환한다는 "기대"가 있다고 말할 수 있다고 생각합니다. 그러나이 경우에는 * 요구 사항 *이 없습니다. 클라이언트의 기대치가 충족되지 않으면 다른 클라이언트가 리소스로 소란을 피우고 있음을 나타냅니다. –