- Building RESTful Python Web Services
- Gastón C. Hillar
- 358字
- 2021-08-20 10:24:27
Updating a single field for a resource with the PATCH method
As we explained in Chapter 2, Working with Class-Based Views and Hyperlinked APIs in Django, our API can update a single field for an existing resource, and therefore, we provide an implementation for the PATCH
method. For example, we can use the PATCH
method to update an existing game and set the value for its played
field to true
. We don't want to use the PUT
method because this method is meant to replace an entire game. The PATCH
method is meant to apply a delta to an existing game, and therefore, it is the appropriate method to just change the value of the played
field.
Now, we will compose and send an HTTP request to update an existing game, specifically, to update the value of the played
field and set it to true
because we just want to update a single field, we will use the PATCH
method instead of PUT
. Make sure you replace 2
with the id or primary key of an existing game in your configuration:
http PATCH :8000/games/2/ played=true
The following is the equivalent curl command:
curl -iX PATCH -H "Content-Type: application/json" -d '{"played":"true"}' :8000/games/2/
The preceding command will compose and send a PATCH
HTTP request with the specified JSON key-value pair. The request has a number after /games/
, and therefore, it will match '^games/(?P<pk>[0-9]+)/$'
and run the patch
method for the views.GameDetail
class-based view. Remember that the method is defined in the RetrieveUpdateDestroyAPIView
superclass and it ends up calling the update
method defined in mixins.UpdateModelMixin
. If the Game
instances with the updated value for the played
field are valid and were successfully persisted in the database, the call to the method will return a 200 OK
status code and the recently updated Game
serialized to JSON in the response body. The following lines show a sample response:
HTTP/1.0 200 OK Allow: GET, PUT, PATCH, DELETE, HEAD, OPTIONS Content-Type: application/json Date: Sun, 26 Jun 2016 04:09:22 GMT Server: WSGIServer/0.2 CPython/3.5.1 Vary: Accept, Cookie X-Frame-Options: SAMEORIGIN { "game_category": "3D RPG", "name": "PvZ Garden Warfare 4", "played": true, "release_date": "2016-06-21T03:02:00.776594Z", "url": "http://localhost:8000/games/2/" }
- SoapUI Cookbook
- 兩周自制腳本語言
- Python語言程序設計
- R語言數據可視化實戰
- Java Web程序設計
- 機械工程師Python編程:入門、實戰與進階
- Hands-On GPU:Accelerated Computer Vision with OpenCV and CUDA
- PHP 7+MySQL 8動態網站開發從入門到精通(視頻教學版)
- Java EE 8 Application Development
- Express Web Application Development
- 從零開始學Linux編程
- Go語言精進之路:從新手到高手的編程思想、方法和技巧(2)
- 響應式架構:消息模式Actor實現與Scala、Akka應用集成
- Go語言編程
- Arduino電子設計實戰指南:零基礎篇