RESTful是一種架構風格。REST ( Representational State Transfer ) 指的是一組架構約束條件和規範。知足這些約束條件和規範的應用程序就是 RESTful。REST的核心是面向資源,下降開發的複雜性,提升系統的可伸縮性。
REST提出設計概念和準則爲: 網絡上的全部事物均可以被抽象爲資源 每一個資源都有惟一的資源標識,對資源的操做不會改變這些標識
統一接口,全部的數據的元操做,即CRUD GET (SELECT):從服務器取出資源 (一項或多項)。 POST (CREATE):在服務器新建一個資源。 PUT (UPDATE):在服務器更新資源 (客戶端提供完整資源數據)。 PATCH (UPDATE):在服務器更新資源 (客戶端提供須要修改的資源數據)。 DELETE (DELETE):從服務器刪除資源。
無狀態,指的是請求的狀態,而不是資源的狀態。是兩個關聯用戶 (Client與Server) 進行交互操做時所留下來的公共信息(工做流、用戶狀態信息等數據)。這些信息能夠被指定在不一樣的做用域中,如page、request、session、application或全局做用域,通常由Server中的Session來保存這些信息。 在基於狀態的Web服務中,Client與Server交互的信息 (用戶登陸狀態) 會保存在Server的Session中。再這樣的前提下,Client中的用戶請求只能被保存有此用戶相關狀態信息的服務器所接受和理解,這也就意味着在基於狀態的Web系統中的Server沒法對用戶請求進行負載均衡等自由的調度 (一個Client請求只能由一個指定的Server處理)。同時這也會致使另一個容錯性的問題,若是指定的Server在Client的用戶發出請求的過程當中宕機,那麼此用戶最近的全部交互操做將沒法被轉移至別的Server上,即此請求將無效化。 在無狀態的Web服務中,每個Web請求都必須是獨立的,請求之間是徹底分離的。Server沒有保存Client的狀態信息,因此Client發送的請求必須包含有可以讓服務器理解請求的所有信息,包括本身的狀態信息。使得一個Client的Web請求可以被任何可用的Server應答,從而將Web系統擴展到大量的Client中。
如何實現如用戶信息的無狀態:
將用戶信息保存到cookie中,或登陸時將token保存至內存數據庫,再將token反回給客戶端,客戶端每一次調用都傳送這個token。數據庫