2012-10-17 10 views
7

Proste pytanie: co, jeśli NIE wysyłam danych (treści) za pomocą metody HTTP POST/PUT w moim zasobie - czy nadal jest REST?PUT bez danych, czy jest RESTful?

Oczywiście, pytanie brzmi, w którym przypadku chciałbym użyć PUT bez danych. Wyobraź sobie użytkownika, który chce zresetować swoje hasło (jak w this older topic).

Co o tym sądzisz? Czy nie wolno wysyłać treści za pomocą metod POST/PUT? Osobiście nie mam z tym problemu, ale jestem ciekawy, co powiedzieliby inni ludzie.

Odpowiedz

5

Tak, jest to całkowicie dopuszczalne. Każda akcja (POST do kolekcji, PUT do zasobu) wykonana bez danych powinna utworzyć nowy, "pusty" zasób. Definicja "pustego" tutaj zależy od tego, co jest reprezentowane.

W szczególnym przypadku zresetowania hasła użytkownika nie powiedziałbym jednak, że powyższy model ma zastosowanie. Jeśli rzeczywiście istnieje zasób hasła, PUT bez danych może sugerować ustawienie hasła, które ma być puste, zamiast resetowania go. W tym scenariuszu przyjdę z zaakceptowaną odpowiedzią na to pytanie.

3

Nie potrzebujesz danych w teście POST lub PUT, aby był spokojny. Jeśli robisz coś, co nie jest idempotentne (co oznacza, że ​​żądanie modyfikuje lub tworzy zasób), nie chcesz używać GET (bez względu na to, czy istnieją dane do przekazania, czy nie). Na przykład możesz mieć usługę WWW RESTful, która uwzględnia czas żądania i adres URL zasobu, tak jak wszystko, czego potrzebuje, aby utworzyć lub zmodyfikować niektóre zasoby - bez danych żądania!

Powiązane problemy