2013-02-12 10 views
6

Welcher HTTP-Statuscode ist am besten geeignet, um einem Client zu vermitteln, dass "Ihre Anfrage in Ordnung ist, aber noch läuft. Schauen Sie kurz am gleichen Ort zurück . "Der am besten geeignete HTTP-Statuscode für "Job in progress"

Angenommen, der Client sendet eine erste Anforderung zum Starten einer schweren Abfrage und der Server gibt sofort eine URL zurück, die der Client regelmäßig für das Ergebnis abrufen kann. Wenn der Client diese URL aufruft, bevor der Job abgeschlossen ist, welcher ist der am besten geeignete HTTP-Statuscode?

202 Akzeptiert wäre mein erster Impuls. Ist dies der beste oder gibt es einen besseren, der für diesen Zweck in REST-Schnittstellen idiomatischer ist?

Antwort

16

Für mich 202 Akzeptiert wäre der beste Weg zu gehen.

Siehe documentation auf der W3C-Website.

10.2.3 202

die Anforderung angenommen wurde zur Bearbeitung angenommen, aber die Verarbeitung ist nicht abgeschlossen ist. Die Anfrage wird möglicherweise nicht einmal auf angewendet, da sie möglicherweise nicht erlaubt ist, wenn die Verarbeitung tatsächlich stattfindet. Es gibt keine Möglichkeit, einen Statuscode von einem asynchronen -Vorgang wie diesem erneut zu senden.

Die 202 Antwort ist absichtlich unverbindlich. Sein Zweck ist einem Server zu erlauben, eine Anfrage für einen anderen Prozess (vielleicht ein Batch-orientierten Prozess, der nur einmal pro Tag ausgeführt wird) ohne erfordern die Verbindung des User-Agent mit dem Server persistent, bis der Prozess abgeschlossen ist . Die mit dieser Antwort zurückgegebene Entität SOLLTE einen Hinweis auf den aktuellen Status der Anforderung und entweder einen Zeiger auf einen Statusmonitor oder eine Schätzung enthalten, wann der Benutzer erwarten kann, dass die Anforderung erfüllt wird.