Spis treściKliknij link, aby przejść do wybranego miejsca
Ta treść została automatycznie przetłumaczona z ukraińskiego.
PUT i PATCH to dwa metody HTTP, które są używane do aktualizacji zasobów na serwerze w kontekście RESTful usług internetowych. Główna różnica między nimi polega na tym, jak współdziałają z istniejącymi zasobami.
PUT (Zastąpienie obiektu)
Żądanie PUT wskazuje, że klient wysyła nowe przedstawienie zasobu, które ma całkowicie zastąpić bieżący stan zasobu lub stworzyć nowy, jeśli go nie ma. Innymi słowy, cały zasób musi zostać zastąpiony nowym.
Przykład Ruby on Rails:
# Kontroler
def update
@user = User.find(params[:id])
if @user.update(user_params)
render json: @user
else
render json: @user.errors, status: :unprocessable_entity
end
end
W tym przykładzie update jest używane z żądaniem PUT, a @user.update(user_params) zastępuje wszystkie atrybuty użytkownika nowymi wartościami, które pochodzą od klienta. Oznacza to, że user_params zawiera wszystkie parametry obiektu (modelu).
PATCH (częściowa aktualizacja)
Żądanie PATCH wskazuje, że klient wysyła częściową aktualizację zasobu, czyli tylko te dane, które należy zmienić, bez konieczności wysyłania wszystkich informacji o zasobie. Jest to wygodne, gdy klient chce zaktualizować tylko niektóre pola zasobu. Na przykład - tylko jedną sekcję formularza informacji o sobie na stronie.
Przykład Ruby on Rails:
# Kontroler
def update
@user = User.find(params[:id])
if @user.update(user_partial_params)
render json: @user
else
render json: @user.errors, status: :unprocessable_entity
end
end
Tutaj @user.update(user_partial_params) jest używane do częściowej aktualizacji użytkownika za pomocą żądania PATCH, gdzie user_partial_params zawiera tylko te pola, które należy zaktualizować.
Podsumowując, PUT jest używane do pełnej aktualizacji zasobu, podczas gdy PATCH jest używane do częściowej aktualizacji, pozwalając na zachowanie innych części zasobu bez zmian.
Ruby on Rails to dość inteligentny framework i sam określa, jakie żądanie należy wykonać. Umożliwia to automatyzację i uproszczenie logiki kontrolera oraz sprawia, że kod jest bardziej czysty i zrozumiały.
Technicznie rzecz biorąc, wywołanie @user.update(user_params) (które rozważaliśmy wcześniej jako PUT) może być PATCH, a nie PUT, ponieważ formularz na froncie nie ma wszystkich pól obiektu.
Ten post nie ma jeszcze żadnych dodatków od autora.