初步瞭解RESTful(二)—————認知RESTful API

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。**1**.Request和ResponseRESTful API的開發和使用,無非是用戶端向伺服器發請求(request),以及伺服器對用戶端作出回應(response)。用戶端會給予GET方法向伺服器發送請求擷取資源,基於PUT或PATCH方法向伺服器發送更新資料的請求,服務API設定時也應該要按照相應規範來處理對應的請求,這點現在應該成為所有RESTful API的開發人員的共識。這裡我們來簡單說一下常見的響應碼:當GET、PUT和PATCH請求成功時,要返回對應的資料,及狀態代碼200,即SUCCESS;當POST建立資料成功時,要返回建立成功的資料,及狀態代碼201,即CREATED;當DELETE刪除資料成功時,不返回資料,狀態代碼要返回204.即NO CONTENT;當GET不到資料時,狀態代碼要返回404,即NOT FOUND;任何時候,如果請求有問題,如檢驗請求資料時發現錯誤,要返回狀態代碼400,即BAD REQUEST當API請求需要使用者認證時,如果request中的認證資訊不正確,要返回狀態代碼401,即NOT AUTHORIZED;當API請求需要驗證使用者權限時,如果目前使用者無相應許可權,要返回狀態代碼403,即FORBIDDEN最後,關於Request和Response,不要忽略了HTTP header中的Content-Type。以json為例,如果API要求用戶端發送json資料,則服務端僅做好json資料的擷取和解析即可,但如果服務端支援多種類型資料的傳入,如果同時支援json和form-data,則需要根據用戶端發送請求時header中的Content-Type,對於不同類型是資料分別實現擷取和解析;如果API響應用戶端請求後返回的json資料,需要在header中添加Content-Type=application/json。**2**.序列化和還原序列化**Serialization**和**Deserialization**即序列化和還原序列化,RESTful API以規範統一的格式作為資料的載體,常用的格式有json或xml。以json格式為例,當用戶端向伺服器發請求時,或者伺服器響應用戶端的請求,向用戶端返回資料時,都是傳輸json格式的文本,但是在伺服器內部,資料處理時基本不採用json格式的字串,而是native類型的資料,即本地化資料(類的執行個體object,即對象)。json只是在服務端與用戶端通訊時在網路上傳輸資料的格式,服務端和用戶端內部均存在將json轉化為native類型和將native類型資料轉化為json格式,其中,將native資料轉化為json即為序列化,將json轉化為native資料即為還原序列化。雖然有的語言中的資料類型能輕易的實現序列化和還原序列化,但對於複雜的API,內部實現時總是以object作為資料的載體。因此,數列化與反序列話方法的實現,是開發RESTful API最重要的一步準備工作。**3**.ValidationValidation即資料校正,是開發健壯RESTful API中另一個重要的一環。仍然用json舉例,當用戶端向服務端發送GET、POST和PATCH請求時,通常會同時給伺服器發送json格式的相關資料,伺服器在做資料處理之前,先做資料校正,是最合理且最安全的前後端互動方式,當前端發送的資料不正確或不合理時,服務端經過校正後直接向用戶端返回400錯誤及相應的資料錯誤。**·**資料類型校正,如欄位資料類型為int,那麼給字串的值則報錯**·**資料格式校正,如果字串類型為郵箱或密碼,則賦值必須滿足相應的Regex,才是正確的輸入資料**·**資料邏輯校正,如資料包含出生日期和年齡兩個欄位,需要核對兩個資料之間的嚴謹性,不一致則返回錯誤資訊**4**.Authentication和PermissionAuthentication指的是使用者認證,Permission指的是許可權機制,這兩點使得RESTful API強大、靈活和安全的保證。常用的認證機制是BASIC Auth和OAuth,除非API極為簡單,且沒有潛在的安全性問題,否則認證機制是都要實現的並應用到API中去。BASIC Auth非常簡單,很多架構都整合了BASIC Auth的實現,自己都能寫一個。如今OAuth已經成了企業級服務的標配,其相關的開源實現方案非常豐富。許可權機制是對API請求更進一步的限制,只有通過認證的使用者符合許可權要求,才能訪問API。許可權機制的實現依賴於系統的商務邏輯和應用情境,一般來說,常用的許可權機制包括全域型的和對象型的,全域型的許可權機制主要指,為使用者賦予許可權或者為使用者賦予角色或劃分到使用者組,然後為角色或角色群組賦予許可權的方式來實現許可權控制。對象性的許可權機制主要指,許可權控制的顆粒度在object上,使用者對某個具體對象的訪問、修改、刪除或其他行為,要單獨在該對象上為使用者賦予相關許可權來實現許可權控制。總的來說,全域性的許可權控制容易理解,實現也簡單,有很多開源庫可做備選方案;對象性的許可權控制相對複雜一點,但也有很多典型的應用情境,如多人部落格系統中,作者對自己文章的編輯許可權即為對象性的許可權控制,其對應的開源庫也有很多。390 次點擊  

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.