推薦大家購買紙質書籍,當然如果條件有限可以臨時下載電子版的:http://www.jb51.net/books/504703.html
術語
可移植性
平台和系統間傳輸信息的兼容性。
JSON
JavaScriptObjectNotation 對象表示法。
數據交換格式
用於不同平台或系統間交換數據的文本。
字面量
字面意思與其想表達的意思完全一致的值。
變量
通過形如X的標識符來表示的,可以修改的一類值。
最大移植性
通過保證數據本身對於平台和系統的兼容性來提供超越數據格式本身的可移植性。
名稱-值對
指擁有名稱和對應值的屬性和特征(也叫鍵值對)。
語法驗證
json格式的驗證。
一致性驗證
關注獨特的數據結構驗證。
JSON中的字符串類型
一個字符串值,如“你是個好人”,使用雙引號包裹。
概念
JSON是一種數據交換格式。
JSON獨立於編程語言。
JSON基於JavaScript對象的字面量表示法(重點在於表示法)。
JSON表達數據的方式對通用的編程概念都很友好。
JSON基於JavaScript對象字面量表示屬性的語法,但並不包含與JavaScript對象字面量的函數相關部分。
JSON的名稱-值對中,名稱始終被雙引號包裹。
JSON的名稱-值對中,值可以是字符串,數字,布爾值,null,對象式數組。
JSON中的名稱-值對列表始終被花括號包裹。
JSON中多個名稱值對使用逗號分隔。
JSON文件使用.json擴展名。
JSON的媒體類型是application/json。
JSON中的布爾類型的值只有true和false,所有字母必須小寫。
JSON中的null值的所有字母必須小寫,表示空值。
JSON中的數字類型,一個數字值,如66,可以是正整數,負整數,小數,指數。
對象和數組很關鍵的區別就是,對象是名稱-值對構成的列表或集合,數組是值構成的列表和集合。
對象和數組另一個關鍵區別是,數組中所有值應具有相同的數據類型。
術語
JSON中的數組
數組是值的集合或列表,每個值都可以是字符串,數字,布爾值,對象或數組中的任何一種。數組必須被[]包裹,且值與值之間用逗號分隔。
JSON中的對象類型
對象類型是使用逗號分隔的名稱-值對構成的集合,並使用{}包裹。
JSON Schema
數據交換中的一種虛擬合同。
服務端(web開發中的)
當網頁式資源被請求時,在服務器上執行的一系列操作。服務器為互聯網浏覽器提供其處理和加載的響應。
客戶端(web開發中的)
當浏覽器請求的界面加載完畢時執行的一系列操作,通常是指HTML,CSS和JavaScript。
概念
JSON驗證器負責驗證語法錯誤,JSON Schema負責提供一致性驗證。
JSONSchema是負責數據接收第一道防線,也是數據發送方節約時間,保證數據正確的好工具。
JSONSchema可以解決下列一致性驗證的問題
1.值的數據類型是否正確? 可以具體規定一個值是數字、字符串等類型。
2.是否包含所需要的數據? 可以具體規定哪些數據是需要的,哪些不需要的。
3.值的形式是不是我需要的? 可以指定范圍,最小值最大值。
JSON本身不構成什麼威脅,它只是文本。
在定位JSON安全問題時,應該記住以下3件事.
1.不要使用頂級數組,頂級數組是合法的JavaScript腳本,他們可以用<script>標簽鏈接並使用。
2.對於不想公開的資源,僅允許使用HTTPPost方法請求,而不是Get方法,get方法可以通過url請求,甚至放在script標簽中。
3.使用JSON.parser()來替代eval(),eval()函數會將傳入的字符串編譯並執行,這會讓你的代碼易被攻擊,應僅使用JSON.parser()來解析json數據。
安全漏洞通常由於開發人員沒有考慮“黑客如何利用這一點”這一問題所導致的。
JavaScript的XMLHTTPRequest與WEBAPI之間的關系是客戶端與服務端之間的關系。
XMLHTTPRequest並不僅限於XML,還可以用它來請求JSON資源
術語
跨站請求偽造(CSRF)
指利用站點對用戶浏覽器的信任進行攻擊
頂層JSON數組
存在於JSON名稱-值對之外的位於文檔最頂層的JSON數組。
注入攻擊
依賴於將數據注入到web應用程序以方便惡意數據執行或編譯的攻擊。
JSON跨站腳本攻擊
通過截取或將站點中所使用的第三方代碼更換為惡意腳本,來對站點進行的一種注入攻擊。
webApi
通過Http與服務進行交互的一系列指令與標准。
XMLHTTPRequest
一種JavaScript對象,無需刷新頁面即可從一個URL獲取數據,常用與AJAX編程。
超文本傳輸協議(HTTP)
萬維網使用的交換數據的基本協議
序列化
將對象轉化為文本的操作
反序列化
將文本轉化為對象的操作。
概念
網站為人服務,webAPI為代碼服務,他們都使用Http協議。
同源策略使得JavaScript和JSON資源進行客戶端-服務端交流時出現了一些困難。
客戶端跨域的XMLHTTPRequest需要服務端的支持來保證JSON資源請求成功。
jQuery是一款提供了JSON請求和解析功能的能夠縮短開發時間的抽象化工具,同時它還解決了跨浏覽器兼容問題。
AngularJS MVC的概念
JSON是模型||數據模型
HTML是視圖,且提供了與模型進行綁定的語法
控制器是AngularJS語法來定義和操作與模型和視圖間的交互的JavaScript文件。
AngularJS使得JavaScript對象和JSON在MVC架構中大放異彩。
在關系型數據庫中,常常會存在表列行以及他們之間的關系,其中會用到主鍵和外鍵。
NoSQL數據庫有許多種,它們有與傳統的關系型模型不同的數據存儲與利用方法。
CouchDB數據庫重要概念
1.它是一種面向文檔的NoSQL數據庫
2.它存儲和管理JSON文檔
3.它會在存儲和獲取數據的同時維護好數據結構
4.它會使用基於HTTP的API來獲取作為JSON文檔資源的數據
5.它使用JavaScript作為查詢語言,且通過視圖的map和reduce方法來跨API獲取數據。
在服務端,可以將JSON反序列化為對象而運用在編程邏輯中,也可以將對象序列化成JSON格式。
JSON同時被服務端和客戶端較好的支持,使得它在web領域從諸多交換數據格式中脫穎而出。
術語
同源策略
出於安全考慮,浏覽器僅會請求同一域的腳本。
跨域資源共享CORS
通過設置響應頭,使得跨於請求可以成功。
JSON-p
使用script標簽,繞過同源策略限制,從不同域名的服務器請求JSON。
抽象化
一種處理復雜系統的技術,主要思想是將一個大問題轉換為多個小問題
框架
一種能夠節約時間,已讓我們更專注於構建功能的抽象化工具。
Jquery.parserJSON()
一個jquery的函數,它不僅調用JSON.parser()函數,還會兼容那些不支持JSON.parser()函數的老式浏覽器,且通過驗證字符來評估字符串,從而避免了可能的安全問題。
jquery.getJSON()
jquery.ajax()函數的簡寫形式,其中包含了將json解析為JavaScript對象的功能。
單頁web應用
與傳統的多頁方式不同,著力於提供更加無縫的應用體驗的網頁。
模型-視圖-控制器(MVC)
一種應用架構模式,它將應用分為3部分:模型(數據)、視圖(展示)、以及控制器(更新模型和視圖)
AngularJS
一款使用JavaScript對象作為數據模型的JavaScriptMVC框架。
關系型數據庫
一種將存儲的數據用可以辨識的關系進行結構化存儲的數據庫。
NoSQL數據庫
一種不通過存儲數據間關系來存儲的數據庫。
CouchDB
一種面向文檔的NoSQL數據庫存儲類型,使用JSON文檔的形式來存儲數據。
ASP.NET
微軟開發的服務端Web框架
PHP
用於創建動態web頁面的服務端腳本語言
Ruby on Rails
使用Ruby編寫的服務端Web應用框架
Node.js
基於谷歌V8引擎的服務端JavaScript。
java
一種面向對象編程語言。
JSON還會作為靜止的配置文件
在考慮用什麼數據格式時,數據的形式和交換數據的系統都應該被考慮到。!!!JSON不總是最佳選擇。