官术网_书友最值得收藏!

POST, PUT, and PATCH 

The POST method is used to create a resource on the server. In the previous books API, this operation creates a new book with the given details. A successful POST operation returns a 2xx status code. The POST request can update multiple resources: /v1/books.

The POST request can have a JSON body like the following: 

{"name" : "Lord of the rings", "year": 1954, "author" : "J. R. R. Tolkien"}

This actually creates a new book in the database. An ID is assigned to this record so that when we GET the resource, the URL is created. So, POST should be done only once, in the beginning. In fact, Lord of the Rings was published in 1955. So, we entered the published date incorrectly. In order to update the resource, let's use the PUT request.

The PUT method is similar to POST. It is used to replace the resource that already exists. The main difference is that PUT is an idempotent operation. A POST call creates two instances with the same data. But PUT updates a single resource that already exists:

/v1/books/1256

PUT does this using a body containing JSON syntax, as follows:

{"name" : "Lord of the rings", "year": 1955, "author" : "J. R. R. Tolkien"}

1256 is the ID of the book. It updates the preceding book with year:1955. Did you observe the drawback of PUT? It actually replaced the entire old record with the new one. We needed to change a single column. But PUT replaced the whole record. That is bad. For this reason, the PATCH request was introduced. 

The PATCH method is similar to PUT, except it won't replace the whole record. PATCH, as the name suggests, patches the column that is being modified. Let's update the book 1256 with a new column called ISBN:

/v1/books/1256

Let's use put the following JSON in the body:

{"isbn" : "0618640150"}

It tells the server, "search for the book with ID 1256. Then add/modify this column with the given value."

  PUT and PATCH both return a 2xx status for success and 404 for not found.
主站蜘蛛池模板: 石楼县| 阳朔县| 台南县| 南安市| 周宁县| 宜春市| 南靖县| 嘉义县| 吉安市| 错那县| 柳江县| 满洲里市| 凤翔县| 贺州市| 衡阳县| 福州市| 成都市| 西城区| 隆德县| 临朐县| 柞水县| 三穗县| 久治县| 鄂托克前旗| 宝应县| 洛隆县| 林西县| 柳江县| 徐闻县| 尖扎县| 林口县| 鹤峰县| 巴塘县| 密云县| 奈曼旗| 斗六市| 盱眙县| 明水县| 蛟河市| 正蓝旗| 平山县|