반응형
파일 업로드를위한 REST 디자인
사용자가 다음을 수행 할 수있는 파일 업로드 서비스 용 REST API를 만들어야합니다.
- 세션 열기
- 여러 파일 업로드
- 세션 닫기
그런 다음 나중에 돌아와서 이전 세션에서 업로드 한 파일로 작업을 수행합니다.
각 파일에 대한 데이터를 처리하고 파일 자체의 내용을 쉽게 처리하기 위해 다음을 사용하려고 생각하는 URI 체계입니다.
/sessions/
/sessions/3
/sessions/3/files
/sessions/3/files/5
/sessions/3/file/5/content
/sessions/3/file/5/metadata
이렇게하면 파일 메타 데이터를 파일 내용과 별도로 처리 할 수 있습니다. 이 경우 파일 콘텐츠 및 파일 메타 데이터 에 대해 GET 만 허용되며 둘 중 하나를 업데이트하려면 새 파일이 PUT이어야합니다.
이게 말이 돼? 그렇지 않다면 왜 그리고 어떻게 더 나을 수 있습니까?
세션이 필요한 이유는 무엇입니까? 인증 및 권한 부여 이유입니까? 그렇다면 SSL 또는 digest 와 함께 http basic을 사용합니다 . 따라서 http는 상태 비 저장이고 각 요청에 보안 헤더가 전송되기 때문에 시작 또는 종료 세션이 없습니다.
업로드 리소스의 제안은 개인 파일 시스템으로 직접 매핑하는 것입니다.
# returns all files and subdirs of root dir
GET /{userId}/files
GET /{userId}/files/file1
GET /{userId}/files/dir1
# create or update file
PUT /{userId}/files/file2
파일 콘텐츠를 업로드 할 때 멀티 파트 콘텐츠 유형을 사용 합니다 .
댓글 후 답변 수정
업로드 페이로드 내에 링크 (파일 콘텐츠)를 도입하여 원하는 파일 콘텐츠와 페이로드 분리를 설계합니다. 자원 구조를 용이하게합니다.
표현 '업로드'리소스 :
{
"upload-content" : "http://storage.org/2a34cafa" ,
"metadata" : "{ .... }"
}
리소스 작업 :
# upload file resource
POST /files
-> HTTP 201 CREATED
-> target location is shown by HTTP header 'Location: /files/2a34cafa
# /uploads as naming feels a bit more natural as /files
POST /sessions/{sessionId}/uploads
-> HTTP 201 CREATED
-> HTTP header: 'Location: /sessions/{sessionId}/uploads/1
-> also returning payload
# Updating upload (like metadata)
/PUT/sessions/{sessionId}/uploads/1
참조 URL : https://stackoverflow.com/questions/8436224/rest-design-for-file-uploads
반응형
'Nice programing' 카테고리의 다른 글
RecyclerView는 NestedScrollView 내에서 사용할 때 뷰를 재활용하지 않습니다. (0) | 2021.01.08 |
---|---|
Symfony 애플리케이션의 교리 엔티티 및 비즈니스 로직 (0) | 2021.01.08 |
Inkscape의 투명도 대 흰색 배경 (0) | 2021.01.08 |
로봇 시뮬레이터 (0) | 2021.01.08 |
각도 및 마이크로 프런트 엔드 (0) | 2021.01.08 |