4

同僚のために画像処理 API を設計しました。彼は Ruby (RestClient) をクライアントとして使用しています。

$ curl -i -X GET http://abc.com:8080/api/v0/compare-19
HTTP/1.1 303 See Other
Date: Thu, 10 Jan 2013 08:02:02 GMT
Content-Type: application/json
Location: http://abc.com:8080/result/856caf71-df10-4b9e-a981-4785de2f4854.png
Transfer-Encoding: chunked
Server: Jetty(8.1.3.v20120416)

{
    "id": 19,
    "state": "completed",
    "timestamp": "2013-01-10T00:01:13.755-08:00",
    "resultImage": "856caf71-df10-4b9e-a981-4785de2f4854.png",
    "passcode": "AXBD"
}

彼は「状態」と「パスコード」を取得したかったのですが、RESTClient のドキュメントによると、ruby プログラムはすぐにhttp://abc.com:8080/result/856caf71-df10-4b9e-a981-4785de2f4854.pngにリダイレクトされました。

Exceptions (see www.w3.org/Protocols/rfc2616/rfc2616-sec10.html)
for results code between 200 and 207 a RestClient::Response will be returned
for results code 301, 302 or 307 the redirection will be followed if the request is a get or a head
for result code 303 the redirection will be followed and the request transformed into a get
for other cases a RestClient::Exception holding the Response will be raised, a specific exception class will be thrown for know error codes

私の質問は、これが REST 応答を返す正しい方法ですか?

4

1 に答える 1

1

http://abc.com:8080/api/v0/compare-19リダイレクトなしで 200 OK 応答になるようにURL をそのままにしておいた方がよいと思います。応答の resultImage を画像への相対/絶対 URL にします。その後、クライアントは操作に関するメタデータを取得し、最終結果の画像を取得したい場合は resultImage URL をたどることができます。

于 2013-01-18T01:36:38.920 に答える