在這樣的一個設想中,在線編輯器(前端部分,如http://runjs.cn/)的實現應該不是大的問題,後端涉及業務邏輯保存數據諸多功能,好比說J2EE就是幹這個事的。呃,換個直指本質思路。css
http://www.oschina.net/news/36941
--> select * from news where id=36941
html
對比上面,無非是將url轉換爲sql而後取其執行結果,再加上html/css/js之類的包裝展示在咱們現前。後臺開發人員說穿了就在作這件事!前端
那麼,咱們可否更狠一些,扔掉JAVA,直接就建一個url<-->sql
之間的映射呢?web
/news
-->select * from news where id=${id}
sql
假設創建好如上映射關係,請求連接爲http://www.oschina.net/news?id=36941
,接下來的問題就是如何將url轉化爲sql呢,個人作法是利用正則取Sql 中的${id}
, 而後從請求(request)中取得id的值,從而實現。json
固然,能夠支持Restful,創建以下映射,就能夠實現http://www.oschina.net/news/36941
的訪問了。這一塊的代碼,不少地方借鑑了@jFinal後端
/news
-->select * from news where id=${0}
瀏覽器
我是這麼想的,在PC端瀏覽器訪問,更指望返回html+數據。而在其它形態的產品(如各類系統的客戶端),彷佛有點涉及跨設備,所以,只有json和xml兩種可選。我傾向於json且目前也只實現了json版本。服務器
這塊代碼借鑑了一些開放平臺,如微博開放平臺、天翼開放平臺等。我作了以下約定,舉例說明:app
http://www.oschina.net/news/36941.json
-->將Sql結果轉爲json返回,這是純數據接口
http://www.oschina.net/news/36941.jsonp
-->將數據以兼容jQuery方式的jsonp返回。提供這樣的接口的目的是先後端獨立並行開發,方便測試。
http://www.oschina.net/news/36941
-->這裏借鑑了Bigpipe思想,具體的作法是:先在約定目錄下找news.html,讀出並寫到客戶端,而後執行Sql並將其結果(json)轉爲js寫到客戶端。
若是單純只是映射,執行Sql,未免心理太不踏實了。我設計是這樣的,數據校驗->攔截器->sql/js
.
數據校驗,也是用JS實現的,若是校驗失敗,返回json中code=-2.可關注vsame
攔截器,用正則匹配攔截的URL.js處理具體邏輯,返回code!=0表示攔截。
sql/js. 目前一個url僅支持執行一個Sql,經過js,能夠執行多個Sql且能夠寫一些代碼.
參考圖:
參考編碼約定:每個*.json
請求必然會返回 code
和 msg
這兩個字段
code = 0: 正確返回 code > 0: 業務---調用API時發生錯誤。 -20 <= code <= -1: 基礎錯誤。 code <-50: 其它系統內部錯誤。 ====================基礎================ -1 服務器內部錯誤(500) -2 請求參數無效。錯誤消息裏會給出具體哪一個參數不合法以及緣由。(一般是數據校驗,若是是登陸,可自行構建錯Map傳參) -3 無API訪問權限。 -4 IP沒有權限。 -5 API不存在。 -6 訪問頻率超限 <=-50 系統內部錯誤。 ====================業務=============== 1 用戶未登陸
在web端,我使用了jQuery.tmpl做爲前端模板技術,相似於Jsp\veloycity。只不過把模板技術寫在前臺了。 嗯,前端仍是比較薄弱,前兩天買了本《JavaScript Web富應用開發》,正在抽時間讀。
若是你覺的 url2sql
還不錯,移步投票頁面支持一下