一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

為您的Web項目構建一個簡單的JSON控制器

  您的下一個 php/MySQL 項目可能與您最近完成的十幾個項目類似:建立一個 MySQL 數(shù)據庫,創(chuàng)建包含 HTML 的 php 視圖,根據需要添加 JavaScript 代碼和 CSS 文件,連接到數(shù)據庫,從數(shù)據庫提取內容來填充視圖,等等。如果您熟悉 web 開發(fā),您一定知道分隔功能代碼的好處。例如,您知道要避免直接在視圖中輸入原始 SQL 查詢,不會在從數(shù)據庫提取數(shù)據的函數(shù)或類中混淆 HTML 標記。

  但是,有時,您的項目可能擴展到您的正常 php/MySQL 舒適水平之外。例如,您可能不僅擁有需要來自一個數(shù)據庫的數(shù)據的常規(guī) web 視圖,還擁有外部應用程序(比如 Facebook),甚至還擁有訪問相同數(shù)據的移動設備(比如智能手機)。

  您可能會發(fā)現(xiàn)自己身陷這樣一種情況:數(shù)據庫更改,或者要求您處理某種類型的 XML 存儲庫。在這些情況下,您對 MySQL 的盲目依賴可能會阻礙您完成項目的工作。

  可以考慮將一個 RESTful JSON 控制器放置到您的項目中,將它用作一個虛擬交通警察,負責發(fā)送請求并接收來自您的數(shù)據源的響應。本文將介紹 REST 和 JSON 的基礎知識,并展示一種建立控制器的方法。其結果是從一個數(shù)據源檢索數(shù)據的簡單方法,檢索的數(shù)據采用標準化的格式,可以使用 phpJavaScript 代碼輕松解析。

  什么是 REST?

  在一個典型的 REST 架構中,一個客戶機發(fā)送一個請求到服務器,服務器使用請求資源的一個表示來進行響應。資源可以是任何信息對象,比如數(shù)據庫或文檔,它的表示通常是一個格式化的文檔(通常是 XML 或 JSON),充當它的當前或被請求狀態(tài)的一個快照。

  REST 資源通常使用有意義的 URLs 標識,這些 URLs 接受不同的請求動詞 GET、POST、PUT 和 DELETE。這些動詞有點類似于許多開發(fā)人員都熟悉的 create-retrieve-update-delete (CRUD) 模型。

  例如,如果您想檢索數(shù)據,則使用 GET 請求;要創(chuàng)建數(shù)據,則使用 POST 請求;要更新數(shù)據,則使用 PUT 請求;最后,要刪除數(shù)據,則使用 DELETE 請求。

  另一個需要考慮的重要因素是響應。RESTful 服務通常在它的響應中提供兩個有意義的組件:響應主體本身和一個狀態(tài)碼。許多 REST 服務實際上允許用戶指定一個響應格式(比如 XML、CSV、序列化的 php 對象或純文本),方法有兩種:一是發(fā)送一個 ACCEPT 參數(shù);二是指定一個文件擴展名(例如,/api/users.xml 或 /api/users.json)。其他 REST 服務器,比如您將在這里實現(xiàn)的服務器,擁有硬編碼的響應格式。這些格式同樣可以接受,只要它們已經有文檔記載。

  響應代碼往往是 HTTP 狀態(tài)碼。這種模式的優(yōu)點是可以使用知名的現(xiàn)有狀態(tài)碼來標識錯誤或成功。狀態(tài)碼 201(CREATED)是一個成功 POST 請求的完美響應。錯誤碼 500 表明在您所處的這端(服務端)上發(fā)生了錯誤,但錯誤碼 400 表明客戶端上出現(xiàn)了失敗(BAD REQUEST)。如果服務器出現(xiàn)故障,將發(fā)送錯誤碼 503(SERVICE UNAVAILABLE)。

  研究一下下面這個示例:一個應用程序擁有的一個數(shù)據源包含一些用戶信息,名、姓、郵件地址、以及Twitter 帳戶。如果您正在設置一個典型的 php 應用程序,您需要創(chuàng)建一個 mysql_query() 包裝器來使用一個 SQL 查詢從數(shù)據庫提取一個清單。您還需要編寫一些 php 代碼,用于調用那個函數(shù)并循環(huán)結果集,以便在應用程序視圖中顯示數(shù)據。

  一個更簡單的方法是設置一個簡單的 REST 控制器,該控制器允許一個針對 /users/list 的、不帶任何參數(shù)的 GET 請求,然后調用適當?shù)臄?shù)據庫函數(shù)并返回一個 JSON 格式的清單。接下來,您的應用程序可以解碼那個 JSON 數(shù)據,以任何必要的方式循環(huán)該數(shù)據,以便顯示數(shù)據內容。

  另外,您可以通過測試檢查是否有任何參數(shù)被發(fā)送到 /users/list。例如,如果您發(fā)送一個 GET 請求到 /users/list/1,那么響應將只包含 ID 為 1 的用戶的細節(jié)。除 JSON 格式外,您甚至可以允許其他格式,比如 XML、CSV 和的 php 對象。

  一個 RESTful JSON 控制器對于您的開發(fā)工作的作用并非僅僅是在視圖和數(shù)據源之間放置一個額外的功能層。想想看,您的基本 php 視圖也許不是請求信息的惟一組件。例如,您可能會使用 jQuery 通過一個 Ajax 接口請求數(shù)據,或者,您的用戶可能會通過一部智能手機或一個 Facebook 應用程序請求數(shù)據。

  在這些情況下,一個接收請求并以一種容易理解(和預測)的格式提供響應的 RESTful 接口可能會極大地簡化您的開發(fā)工作。作為負責 php 視圖(或者甚至 iPhone 應用程序)的開發(fā)人員,您可以發(fā)送一些請求到一個 URL 并接收一組預期響應。在 JSON 控制器的另一面,應用程序可以被鉤掛(hook)到 MySQL、PostgreSQL、一個 XML 文件存儲庫、或者什么也不掛。

  什么是 JSON?

  JSON 是一種基于文本的輕量級數(shù)據交換格式,便于人類和計算機輕松理解和使用。在其出現(xiàn)之初,JSON 設計用于表示簡單數(shù)據結構。盡管它最初被視為用于傳輸特定的 JavaScript 友好數(shù)據的一種方法,但現(xiàn)在幾乎每臺計算機上都有針對它的解析器。在 php 中,一對原生 JSON 函數(shù)(json_encode 和 json_decode)將幫助您執(zhí)行大量繁重的提升。只要將一組數(shù)據(或者甚至一個簡單字符串)發(fā)送到 json_encode,一個 JSON 對象將出現(xiàn)(如 清單 1 所示)。
  清單 1. 一個 php 數(shù)組 vs. 一個 JSON 對象

$data = array(
'firstname'=>'Tom',
'lastname'=>'Smith',
'age'=>40
);

print_r($data);
/* prints
Array(
[firstname] => Tom
[lastname] => Smith
[age] => 40
)
*/

echo json_encode($data);

/* prints
{ "firstname": "Tom",
"lastname": "Smith",
"age":40
}
*/

it知識庫為您的Web項目構建一個簡單的JSON控制器,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 久久福利一区二区 | 综合激情文学 | 91视频高清 | 丁香婷五月 | 久久综合五月开心婷婷深深爱 | 色女人在线视频 | 91欧美精品综合在线观看 | 伊人色婷婷综在合线亚洲 | 四虎看黄| 国产免费久久精品丫丫 | 免费毛片在线视频 | 免费黄在线观看 | 狠狠色做五月深爱婷婷 | 男女视频在线观看免费高清观看 | 欧美日本高清视频在线观看 | 97影院理论午夜论不卡 | 色色色资源站 | 看全色黄大色黄大片色黄看的 | 国产欧美日韩haodiaose | 亚洲国产精品日韩一线满 | 牛牛影院成人免费网页 | 成人免费午夜视频 | 免费黄色在线 | 伊人色婷婷综在合线亚洲 | 精品国产一区二区三区免费 | 久久精品亚洲精品国产色婷 | 一男一女一级毛片 | 97国产精品视频 | 精品欧美一区二区三区在线观看 | 欧美国产91 | 久久夜色精品国产亚洲 | 精品国产一区二区二三区在线观看 | 91精选视频在线观看 | 日本加勒比一区 | 日本精品一区二区三区在线视频| 伊人久久大香线蕉久久婷婷 | 国产精品欧美一区二区三区不卡 | 东北普通话清晰对白 | 伊人网伊人| 久久99精品久久久久子伦 | 日本一区二区三区四区五区 |