2012-01-18 3 views
5

저는 RESTful 웹 서비스를 만들고 있으며 일부 리소스는 컴퓨팅 또는 처리 기능입니다. 예를 들어, 사용자가 이미지를 제출하고 크기 조정되거나 변환 된 이미지를 수신하여 API를 통해 이미지를 스케일링하고 변환 할 수 있습니다.RESTful 처리 함수/리소스 : GET 또는 POST?

Treat the processing function as a resource, and use HTTP GET to fetch a 
representation containing the output of the processing function. Use query 
parameters to supply inputs to the processing function. 

이 입력이 같은 점의 긴/위도 좌표로 (간단 경우에 분명하다

RESTful 웹 서비스 요리 책, 2.5 절에 따르면, 나는 GET을 사용해야합니다). 그러나 이미지와 같은 더 큰 입력에 대해 동일한 조언을 따라야합니까? 내가 아는 한 많은 데이터를 쿼리 매개 변수로 보낼 수는 없습니다.

답변

6

POST를 사용하십시오. 실제로 서버에서 이미지 업로드 및 처리를 수행하고 있습니다. 이미지가 이미 서버에 저장되어 있지 않으면 다른 방법으로 생각할 수 없습니다.

+0

이것은 "이미지가 이미 서버에 저장되어 있습니다."라는 중요한 개념입니다. PUT 또는 POST로 가져올 지 여부는 [다른 질문]입니다 (http://stackoverflow.com/questions/630453/put-vs-post-in-rest). – kdbanman

0

HTTP의 프로토콜 제한으로 인해 이에 대한 조언을 제공합니다. 이것은이 규칙에 대한 예외의 매우 유효한 실행 가능한 예입니다.

+0

현재 양식에서이 대답은 받아 들여지지 않아야합니다. 동료 googler에서 읽기 – kdbanman

1

이미지는 리소스입니다. PUT을 사용하여 서버에 자원을 넣은 다음 원하는 크기를 나타내는 매개 변수를 제공하여 GET 자원을 제공하십시오.

+0

와우, 이것은 아주 자극적이라고 생각합니다! – sivabudh

+1

클라이언트 만 요청의 일부로 이미지 ID를 제출하면 'PUT'을 사용하십시오. 서버가 이미지 ID를 생성하고 성공할 때'POST '를 사용하십시오. Google "REST idempotency"또는 [이 질문] (http://stackoverflow.com/questions/630453/put-vs-post-in-rest) – kdbanman

+0

저장 용량이 우려된다면 어떻게해야합니까? 그런 다음 데이터를 저장할 수 없으며 PUT이 의미가 없습니다. – cammil