url2sql原始想法及參考實現

首先YY一種前景,瀏覽器登陸賬號,顯示是一個簡潔的IDE,編寫保存刷新OK,網站完成。

在這樣的一個設想中,在線編輯器(前端部分,如http://runjs.cn/)的實現應該不是大的問題,後端涉及業務邏輯保存數據諸多功能,好比說J2EE就是幹這個事的。呃,換個直指本質思路。css

http://www.oschina.net/news/36941 --> select * from news where id=36941html

對比上面,無非是將url轉換爲sql而後取其執行結果,再加上html/css/js之類的包裝展示在咱們現前。後臺開發人員說穿了就在作這件事!前端

那麼,咱們可否更狠一些,扔掉JAVA,直接就建一個url<-->sql之間的映射呢?web

1,將URL轉換爲sql

/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}瀏覽器

2,給頁面返回什麼樣的數據

我是這麼想的,在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寫到客戶端。

3,進階

若是單純只是映射,執行Sql,未免心理太不踏實了。我設計是這樣的,數據校驗->攔截器->sql/js.

數據校驗,也是用JS實現的,若是校驗失敗,返回json中code=-2.可關注vsame

攔截器,用正則匹配攔截的URL.js處理具體邏輯,返回code!=0表示攔截。

sql/js. 目前一個url僅支持執行一個Sql,經過js,能夠執行多個Sql且能夠寫一些代碼.

參考圖:

運行流程

參考編碼約定:每個*.json請求必然會返回 codemsg 這兩個字段

code = 0: 正確返回
code > 0: 業務---調用API時發生錯誤。
-20 <= code <= -1: 基礎錯誤。
code <-50: 其它系統內部錯誤。

====================基礎================

-1	 服務器內部錯誤(500)
-2	 請求參數無效。錯誤消息裏會給出具體哪一個參數不合法以及緣由。(一般是數據校驗,若是是登陸,可自行構建錯Map傳參)
-3	 無API訪問權限。
-4	 IP沒有權限。
-5	 API不存在。
-6	 訪問頻率超限
<=-50	 系統內部錯誤。 

====================業務===============

1	 用戶未登陸

4,前端

在web端,我使用了jQuery.tmpl做爲前端模板技術,相似於Jsp\veloycity。只不過把模板技術寫在前臺了。 嗯,前端仍是比較薄弱,前兩天買了本《JavaScript Web富應用開發》,正在抽時間讀。

5,後續

  • 自動化測試(*.json很是方便實現)
  • 多Sql語句支持
  • 相關前端js(數據校驗功能)完善
  • 經常使用模塊積累,如可視化建立表格,登陸,微博呀

5,感謝閱讀

若是你覺的 url2sql 還不錯,移步投票頁面支持一下

原博文連接:http://my.oschina.net/gaollg/blog/103629

相關文章
相關標籤/搜索