2009-10-02 4 views
36

클라이언트가 그림을 업로드 할 수 있도록 HTTP REST API를 확장합니다 (이 질문의 목적 상, 바이너리 데이터로 가정). 지금까지는 API 매개 변수에 문자열 만 허용했습니다. 바이너리 데이터를 업로드 할 수있는 좋은 방법은 무엇입니까? base64로 인코딩 된 형식을 요청할 수 있습니까? 웹 서버가 처리하기에 URL이 너무 길어질 수 있습니까?바이너리 데이터를 HTTP REST API 서비스로 전송하는 좋은 방법은 무엇입니까?

추천/권장 사항이 있습니까?

+0

http://stackoverflow.com/questions/1500744 –

+1

왜 URI 매개 변수를 사용하고 있습니까? 여러분이 필요로하는 모든 것을 HTTP 요청 헤더에 캡슐화 할 수 있습니다. – Gandalf

답변

34

POST 몸체에있는 그대로 2 진 데이터를 보내고 적절한 Content-Type 헤더 (예 : image/jpeg)를 보내면됩니다. 이것이 가장 "RESTful"한 방법이라고 생각합니다.

(일반적으로 REST 서비스를 설계 할 때는 HTTP 프로토콜을 base64처럼 불필요하고 복잡하게 겹쳐 쓰는 대신 HTTP 프로토콜로 작업하는 것이 좋습니다. 궁극적 인 RESTful 프로토콜 및 내용 유형은 "REpresentational State Transfer"에서 다른 "표현"을 허용)

실제 실제 파일 대신 이미지 URL을 수락 할 수 있다는 또 다른 가능성이 있습니다. 이렇게하면 독립 실행 형 앱에서 더 어려워집니다. 사용자의 드라이브에서 이미지를 읽지 만 이미지가 다른 서비스의 URL로 반환 될 수있는 매시업 유형 앱을 더 쉽게 만들 수 있습니다.

두 가지 옵션을 모두 허용 할 수 있습니다.

+1

jpeg 이미지가 아닌 사용자 정의 바이너리 데이터에 사용할 컨텐츠 유형은 무엇입니까? – Pacerier

+1

@Pacerier http://en.wikipedia.org/wiki/Internet_media_type –

+0

사람들이 이미지 검색을 시도 할 때 응답에 Content-Length 헤더를 추가해야합니까? – Cmag

관련 문제