在这样的一个设想中,在线编辑器(前端部分,如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
还不错,移步投票页面支持一下