Jak Brian Agnew zaznacza, 5 minut jest całkowicie do opanowania, jeśli nieco marnotrawienia zasobów, jeśli można kontrolować ustawienia limitu czasu. W przeciwnym razie muszą zostać wykonane co najmniej dwie prośby: pierwsza, aby uzyskać wynik procesu produkcyjnego toczenia, a druga (i trzecia, czwarta, itd., jeśli wynik trwa dłużej niż oczekiwano, aby skompilować), aby odpytać za wynik .
Brian Agnew i Darrel Miller zarówno sugerują podobne podejścia dla dwóch (+) - kroków podejścia: POST żądanie do fabrycznego punktu końcowego, rozpoczęcie pracy na serwerze, a później GET wynik z zwróconego wyniku końcowego.
Chociaż powyższe jest bardzo powszechnym rozwiązaniem i rzeczywiście przestrzega litery ograniczeń REST, to bardzo pachnie RPC.To znaczy, zamiast mówić: "przedstaw mi reprezentację tego zasobu", mówi "uruchom tę zlecenie" (RPC), a następnie "dostarcz mi reprezentację zasobu, który jest wynikiem wykonywania pracy" (ODPOCZYNEK). EDYCJA: Mówię tu bardzo luźno. Aby być jasnym, żadne z nich wyraźnie nie sprzeciwia się restrykcjom REST, ale bardzo przypomina to przygotowanie niezobowiązującego podejścia w odzieży REST, tracąc na tym korzyści (, np. buforowanie, idempotencja) w procesie.
Jako takie, wolałbym zasugerować, że gdy klient po raz pierwszy próbuje pobrać zasobu, serwer powinien odpowiedzieć 202 "Zaakceptowany" (http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.3), być może z "spróbuj ponownie w 5 minut" gdzieś w jednostce odpowiedzi. Następnie klient może sondować ten sam punkt końcowy,, aby uzyskać wynik, jeśli jest dostępny (w przeciwnym razie zwrócić inny 202 i spróbować ponownie później).
Niektóre dodatkowe korzyści wynikające z tego podejścia są takie, że zasoby jednorazowego użytku (takie jak zadania) nie są niepotrzebnie tworzone, dwa oddzielne punkty końcowe nie muszą być sprawdzane (fabryka i wynik), podobnie drugi punkt końcowy nie musi być określany na podstawie analizy składniowej odpowiedź od pierwszej, tym samym prostsza. Co więcej, wyniki mogą być buforowane, "za darmo" (w sensie kodowym). Ustaw czas wygaśnięcia pamięci podręcznej w nagłówku wyników zgodnie z tym, jak długo wyniki są "prawidłowe", w pewnym sensie dla domeny problemów.
Chciałbym móc nazwać to podręcznikowym przykładem "zorientowanego na zasoby" podejścia, ale, być może, ironicznie, rozdział 8 "RESTful Web Services" sugeruje podejście oparte na dwóch punktach końcowych. Domyśl.
Czy to nie jest stanowe (na serwerze) i nie jest stanowe zachowanie przeciwko ideałom REST? –
@Merlyn Morgan-Graham: to nie jest stanowość, która jest "przeciw ideałom REST", to jest ukryty stan. Ponieważ stan jest dostępny jako zasób pod danym adresem URL, jest to w porządku. –