HTTP 學習筆記

HTTP 學習筆記

學習http的筆記

what is http?

http是無狀態的(stateless)。瀏覽網頁、送出表單,這些行為就是在發送http請求,要注意,每一次的http請求都是各自獨立的,意思就是,每一次我們重新刷新網頁,這一次呈現的網頁和上一次就是不一樣的,它不會儲存你上一次在這個網頁做的動作或輸入,但是這會造成一些使用上的不便,為了解決這個問題,衍生出local storage, cookies, sessions等可以儲存用戶紀錄的解決方法。但是http的本質仍是

HTTPS(Hyper Text Transfer Protocol Secure),超文本傳輸安全協定。客戶端及服務端之間來回的資訊皆被加密,若是我們需要傳送一些較重要、機密的資料,例如信用卡資訊等,應該要用https來傳送

Safe & Idempotent

Safe

不會對伺服器產生任何影響。

Idempotent

若是有一個請求方法,無論發送一次或多次,其對伺服器產生的預期效果皆相同,則該方法為Idempotent。
按照這個規格,PUT, DELETE,以及Safe請求皆算作此類。

HTTP回傳狀態碼

發送請求時,得到的回傳結果。

2XX 成功

狀態碼 解釋 解釋
200 OK
201 Created 資源新增成功
202 Accepted 請求以接受,但尚在處理
204 No Content 請求成功,但尚未回傳

3XX 重新導向

狀態碼 解釋 解釋
301 Moved Permanently 這個連結已經被其他的替換掉了
303 See Other 回傳結果請用其他uri取得,例如發送一個新的Get
304 Not Modified 若發出If-Modified-Since or If-None-Match的表頭,收到這個狀態碼表示資源在表頭中的版本之後並沒有更新

4XX 失敗

狀態碼 解釋
400 Bad Request 客戶端發出的錯誤請求。伺服器不會處理這類請求。
401 Unauthorized 驗證失敗
403 Forbidden 請求正確,但伺服器端拒絕處理。可能是客戶端的身分限制,或是該請求是被禁止的。
404 Not Found 資源不存在
405 Method Not Allowed 該請求行為不被允許
415 Unsupported Media Type 不支援的媒體類型

5XX 伺服器錯誤

狀態碼 解釋
500 Internal Server Error 通用錯誤訊息,可能是伺服器問題。
501 Not Implemented 伺服器認不得這個請求,或是無法達成。有時這暗示未來就可能支援
502 Bad Gateway 接收請求的伺服器端可能是作為proxy或gateway的腳色,這個訊息代表上游的伺服器傳出不合格的回應
503 Service Unavailable 伺服器無法接受請求,可能正在進行維修或是過載。這個狀態通常是暫時的
504 Gateway Timeout 接收請求的伺服器端可能是作為proxy或gateway的腳色。這個狀態碼代表上游伺服器沒有回應

Methods

GET

The GET method means retrieve whatever information (in the form of an entity) is identified by the Request-URI. If the Request-URI refers to a data-producing process, it is the produced data which shall be returned as the entity in the response and not the source text of the process, unless that text happens to be the output of the process.

取得資源。
若請求URI是一個會產生資料的過程,那回傳的結果就會是產生完的結果。

The response to a GET request is cacheable if and only if it meets the requirements for HTTP caching described in section 13.

回傳結果可以快取。

POST

The POST method is used to request that the origin server accept the entity enclosed in the request as a new subordinate of the resource identified by the Request-URI in the Request-Line.

POST用來要求伺服器接收這個請求中包含的實體(傳送資料)。

The action performed by the POST method might not result in a resource that can be identified by a URI. In this case, either 200 (OK) or 204 (No Content) is the appropriate response status, depending on whether or not the response includes an entity that describes the result.

If a resource has been created on the origin server, the response SHOULD be 201 (Created) and contain an entity which describes the status of the request and refers to the new resource, and a Location header (see section 14.30).

POST方法執行後產生的結果可能無法被URI辨識。這時伺服器可以發送200或204狀態碼作為回應。
若是該請求發送的資源在伺服器中已經有了,那麼伺服器應傳送201狀態碼。

除非在表頭中制定,POST方法接收到的回應不可被快取。

PUT

The PUT method requests that the enclosed entity be stored under the supplied Request-URI. If the Request-URI refers to an already existing resource, the enclosed entity SHOULD be considered as a modified version of the one residing on the origin server. If the Request-URI does not point to an existing resource, and that URI is capable of being defined as a new resource by the requesting user agent, the origin server can create the resource with that URI. If a new resource is created, the origin server MUST inform the user agent via the 201 (Created) response. If an existing resource is modified, either the 200 (OK) or 204 (No Content) response codes SHOULD be sent to indicate successful completion of the request. If the resource could not be created or modified with the Request-URI, an appropriate error response SHOULD be given that reflects the nature of the problem.

PUT方法會要求它附帶的實體必須要被儲存在提供的請求URI中。若該請求URI指向一個已經有的資源,則PUT附帶的實體應該被視為是伺服器中同份資料的修改版本。若是請求URI找不到已存在的相同資源,則伺服器可以創造新的一份。
若資源已經在伺服器上,伺服器應回傳201;若PUT請求修改了伺服器上的資源,則根據狀況回傳200或204。若該實體無法在伺服器上被創建、或是無法修改伺服器上的版本,則根據狀況回傳不同狀態碼

DELETE

按照請求發出的URI刪除相應資源。

參考

參考
參考
RESTful 手冊
簡明RESTful API設計要點

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×