新聞中心
本文將主要從AngularJS下Resource與RESTful 接口初探,和調(diào)試工具postman的使用介紹這兩個方面,和大家分享方便開發(fā)與維護的技巧工具。如有不當之處,還請交流指正。

為蘇尼特左等地區(qū)用戶提供了全套網(wǎng)頁設計制作服務,及蘇尼特左網(wǎng)站建設行業(yè)解決方案。主營業(yè)務為成都網(wǎng)站制作、做網(wǎng)站、外貿(mào)營銷網(wǎng)站建設、蘇尼特左網(wǎng)站設計,以傳統(tǒng)方式定制建設網(wǎng)站,并提供域名空間備案等一條龍服務,秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!
技巧1:減少開發(fā)與運維難度,AngularJS下Resource與RESTful 接口初探
現(xiàn)代的項目中前端頁面展現(xiàn)的數(shù)據(jù)多數(shù)是動態(tài)變化的,展示數(shù)據(jù)會涉及到網(wǎng)絡請求,從后臺拿取數(shù)據(jù),前端進行展示。最初的是ajax 請求,它的步驟原理如下:
創(chuàng)建過程有如下步驟:
- 創(chuàng)建一個XMLHttpRequest 對象。(不同的瀏覽器,方法不一樣,可以檢查瀏覽器支持情況)
- 使用 XMLHttpRequest 對象的 open() 和 send() 方法,建立與服務器的鏈接并發(fā)送請求。
- 請求被發(fā)送到服務器時,我們需要執(zhí)行一些基于響應的任務。就是回調(diào)函數(shù)。每當 readyState 改變時,就會觸發(fā) onreadystatechange 事件。
readyState(5個狀態(tài)) 屬性存有 XMLHttpRequest 的狀態(tài)信息。根據(jù)readyState和status的值,使用 XMLHttpRequest 對象的 responseText 或 responseXML 屬性,獲得來自服務器的響應。
這個過程還是比較繁瑣,后來就出現(xiàn)了jQuery, 極大地簡化了 JavaScript 編程。jQuery get() 和 post() 方法用于通過 HTTP GET 或 POST 請求從服務器請求數(shù)據(jù),調(diào)用形式如:$.get(URL,callback) 或者$.post(URL,data,callback);
AngularJS是一款優(yōu)秀的前端JS框架,已經(jīng)被用于Google的多款產(chǎn)品當中。AngularJS有著諸多特性,最為核心的是:MVW(Model-View-Whatever)、模塊化、自動化雙向數(shù)據(jù)綁定、語義化標簽、依賴注入等等。而對于網(wǎng)絡請求,$http幾乎是所有ng開發(fā)中,都會用到的服務。如果接口不是很多,直接使用$resource服務即可,但是對于很多的后端請求接口,那就很有必要使用ngResource服務。該服務創(chuàng)建資源對象的工廠,該資源對象允許你與RESTful服務端數(shù)據(jù)資源進行交互。返回的資源對象擁有提供了高層行為的動作方法,從而無需與底層的$http服務進行交互。具體調(diào)用如下:
- $resource(url[, paramDefaults][, actions]);
返回一個資源“類”對象。該對象包含默認資源動作的方法,和可選的自定義的擴展動作。默認集合包含以下動作:
- { 'get': {method:'GET'}, 'save': {method:'POST'}, 'query': {method:'GET', isArray:true}, 'remove': {method:'DELETE'}, 'delete': {method:'DELETE'} };
在實際的項目開發(fā)中還可以進行自定義的拓展,例如:
- function resourceConfig($resourceProvider) {
- $resourceProvider.defaults.actions = {
- saveArray: {
- method: 'POST',
- isArray: true
- },
- modify: {
- method: 'PATCH'
- },
- create: {
- method: 'POST'
- },
- save: {
- method: 'POST'
- },
- get: {
- method: 'GET'
- },
- query: {
- method: 'GET',
- isArray: true
- },
- update: {
- method: 'PUT'
- },
- delete: {
- method: 'DELETE'
- },
- verify: {
- method: 'POST'
- }
- };
- }
調(diào)用這些方法將以特定的http方法,目標和參數(shù)調(diào)用ng.$http。數(shù)據(jù)從服務器返回后,該對象將是該資源類的一個實例。save,remove,delete動作($前綴)可作為該對象的方法使用。這允許你很容易地對服務器端數(shù)據(jù)進行CRUD操作,如:
- app.factory('Persons', ['$resource', function($resource) {
- return $resource('/person/:id', null, {
- update: { method:'PUT' }
- });
- }]);
現(xiàn)在可以在一個controller中獲取一個person 并更新:
- var person = Persons.get({ id: 3}),
- $id = person.id;
- person.content = 'yyy';
- Persons.update({ id:$id },person );
類對象或?qū)嵗龑ο笾械膭幼鞣椒梢杂靡韵聟?shù)進行調(diào)用:
- HTTP GET “類”動作: Resource.action([parameters], [success], [error]) // eg:Person.update({id: xxx});
- non-GET “類”動作: Resource.action([parameters], postData, [success], [error])
- non-GET 實例動作: instance.$action([parameters], [success], [error]) //eg:person.$update()
Success回調(diào)以(value, responseHeaders)參數(shù)調(diào)用。Error回調(diào)以(httpResponse)參數(shù)回調(diào)。
那么接下來問題來了,什么是RESTful Api設計?
REST(表征性狀態(tài)傳輸,Representational State Transfer)是Roy Fielding博士在2000年他的博士論文中提出來的一種軟件架構(gòu)風格。RESTful風格的設計不僅具有更好的可讀性(Human Readable),而且易于做緩存以及服務器擴展。REST風格體現(xiàn)在URL設計上:
- 每個URL對應一個資源
- 對資源的不同操作對應于HTTP的不同方法
- 資源表現(xiàn)形式(representation)通過Accept和Content-Type指定
對資源的操作有如下:
- GET(SELECT):從服務器取出資源(一項或多項)。
- POST(CREATE):在服務器新建一個資源。
- PUT(UPDATE):在服務器更新資源(客戶端提供改變后的完整資源)。
- PATCH(UPDATE):在服務器更新資源(客戶端提供改變的屬性)。
- DELETE(DELETE):從服務器刪除資源。
綜上所述,個人以為無論是ngresouce的使用還是Restful api 設計風格的使用,目的就是提高復用性,資源請求統(tǒng)一配置處理,提高代碼可讀性與服務的拓展性,減少開發(fā)與運維難度。
技巧2:跟蹤網(wǎng)頁請求,用好調(diào)試工具postman
用戶在開發(fā)或者調(diào)試網(wǎng)絡程序,需要一些方法來跟蹤網(wǎng)頁請求,Postman在發(fā)送網(wǎng)絡HTTP請求方面可以說是Chrome插件類產(chǎn)品中的代表產(chǎn)品之一,使用十分方便,如下是其主界面 :
這里著重說明下post 方法的使用:
請求頭是根據(jù)請求參數(shù)的形式自動生成的,請求頭中的Content-Type與請求參數(shù)的格式之間有關(guān)聯(lián)關(guān)系,比如:
(1)表單提交 form-data,x-www-form-urlencoded
(2)json,xml 等提交,可以在右邊設置請求頭屬性
(3)二進制文件提交
有時候?qū)懡涌谖臋n需要使用到curl語句,或者要求有莫種語言的示例等,Postman也提供了相應的支持,如下:
選擇面板中標的12 后會出現(xiàn)這個面板,其中包含了C 、C# 、Java、 Go 、Python 等主流編程和腳本語言,十分方便。
其他的功能不在此一一列舉,更多有關(guān)提高開發(fā)效率,與開發(fā)調(diào)試技巧歡迎關(guān)注達觀數(shù)據(jù)多多交流。
參考資料:
http://www.ruanyifeng.com/blog/2014/05/restful_api.html
https://learning.getpostman.com/getting-started/
作者簡介
郭權(quán):達觀數(shù)據(jù)Web前端工程師,負責達觀數(shù)據(jù)前端產(chǎn)品的開發(fā)、維護、優(yōu)化,升級等具體工作。對數(shù)據(jù)的展示形式,后端數(shù)據(jù)交互處理有一定的研究和濃厚的興趣。
【本文為專欄作者“達觀數(shù)據(jù)”的原創(chuàng)稿件,轉(zhuǎn)載可通過專欄獲取聯(lián)系】
新聞名稱:達觀數(shù)據(jù):用好ngResource和postman,提高你的開發(fā)調(diào)試效率
標題URL:http://www.dlmjj.cn/article/cdsgpeo.html


咨詢
建站咨詢
