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

相关文章
相关标签/搜索