javascriptMVC教程 — 13.ajax服務指南

來源:互聯網
上載者:User

  因為javascriptMVC的靈活性,他可以和任何服務層結合起來開發。本指南的目的在於告訴你如何設計服務層,最大程度的減少運行javascriptMVC所要做的額外工作。一般而言,服務層越輕越好,直接返回資料庫查詢結果,保證和用戶端通訊的靈活度。

  

  JSON REST

  最好的綜合服務層可以被描述為JSON REST。JSON用來實現用戶端和服務端資料的交換。REST是具象狀態傳輸(Representational State Transfer),使用GET POST PUT 和 DELETE來修改資源urls。例如一個簡單的Message Serviceapi,他會暴露下面的urls:

  1.GET /messages - 從伺服器擷取訊息數組。

  2.GET /messages/{id} - 從伺服器擷取指定訊息。

  3.POST /messages - 在伺服器上建立一個訊息。

  4.PUT /messages/{id} - 在伺服器上更新指定訊息。

  5.DELETE /messages/{id} - 在伺服器上刪除指定訊息。

 

  查詢字串參數

  在詳解講解各種url之前,很有必要先快速介紹下參數是如何傳遞給查詢字串的。jQuery.Model把參數傳遞給jquery的$.ajax,他裡面使用jQuery.param做以轉換。例如下面的例子:

$.get('/messages',{  userId: 5,   order: ['createdAt ASC','user.name ASC'] })

 產生後的結果:

GET /messages?        userId=5&        order%5B%5D=createdAt+ASC&        order%5B%5D=user.name+ASC

 

  GET /messages

  GET /messages請求會把所有可見的資料返回給使用者,資料結構如下:

{  "data": [      {         "id" : 1,         "fromUserId": 921,         "text": "Hello World",         "createdAt" : 1024324214123      },      {         "id" : 2,         "fromUserId": 923,         "text": "Goodnight World",         "createdAt" : 23524365346543      },      ...  ],  "count": 100 }

  1.data - 對象數組,每個資料代表一個訊息。

  2.count -數組的大小。

 

  GET /messages會把傳遞的參數組織成name=value形式的連接字串,例如:GET /messages?limit=10&offset=20&order[]=createdAt+DESC。

  常見name / values:

  • limit -返回資料的大小
  • offset -資料位移量
  • order - 資料相片順序

這些資料會被直接傳給資料庫查詢字串。

  有時候你想擷取特定項目的所有資料,例如使用者52的所有資料,請求的url應該像這樣:

GET /messages?fromUserId=52

伺服器需要擷取限制條件為fromUserId = 52的所有資料。

  相關資料

  另外一個問題是因為效能的考慮,你擷取要在一個資料中加入其他的資料,例如你在擷取訊息的時候,同時像擷取使用者的資訊。在這種情況下,我們鼓勵添加'include'參數,url如下:

GET /messages?include[]=fromUser

fromUser資料會被加入到每一個訊息對象中:

{  "data": [      {         "id" : 1,         "fromUserId": 921,         "text": "Hello World",         "createdAt" : 1024324214123,         "fromUser": {           "id" : 921,           "name" : "Justin Meyer"         }      },      ...  ],  "count": 100 }

 

  GET /messages/{id}

  從伺服器擷取一條資料,他可以是json形式:

->{    "id" : 1,    "fromUserId": 921,    "text": "Hello World",    "createdAt" : 1024324214123}

 

  POST /messages

  在伺服器上建立一條資料。一般而言,他可以是json資料,有點像GET請求擷取的資料,區別在於它沒有id屬性和其他一些伺服器將會產生的屬性,像下面的例子:

POST /messages{    "fromUserId": 921,    "text": "A new message"}

伺服器會幫你產生id和createAt屬性,伺服器返回的資料結果可能是:

->{    "id": 22,    "createdAt": 1224324214123}

 

  PUT /messages/{id}

  補救伺服器上的資料,有點像POST,資料是JSON格式。但是資料只包含需要更新的屬性值,如下:

PUT /messages/22{  'text': "An updated EVIL message"}  

傳回值需要包含在伺服器端修改或者調整了的資料。例如伺服器會過濾掉“屏蔽詞”,還會更新updateAt屬性,傳回值應該如下:

->{  'text' : "An updated message",  'updatedAt' : 123254356346241}

但是如果伺服器沒有發生更新和更改操作,傳回值應該是一個Null 物件:{}。

 

  DELETE /messages/{id}

  在伺服器上刪除一條資料。

 

  發送時間

  最好的發送時間的形式是,使用Julian日期類型的整數,例如:

createdAt: 12313123133423

我們可以很容易的使用javascript把他轉換成date類型:

new Date(123123133423)

 

  使用一個請求CUD多個資料

  可以使用jQuery.Model.List實現用一條請求實現對多個資料的create, update, 和 delete操作。

 

  異常處理

  當異常發生的時候,確保你的伺服器返回正確的http狀態碼,返回的對象可以是json資料,屬性名稱對應異常數組:

{   email : ["Formatting is incorrect","No email is provided"]}

 

javascriptMVC教程目錄

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.