如何高效利用dreamfactory开源平台实现复杂业务需求?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1399个文字,预计阅读时间需要6分钟。
DreamFactory是一个为移动端、Web端和物联网终端等应用提供REST API的免费、开源平台。它可以直接将数据库发布为REST服务,简化服务端开发(服务端开发为零)。提供标准化的端点服务。
Dreamfactory可将数据库直接发布为REST服务,节约服务端开发成本(服务端开发为零),提供标准的RESTAPI,支持的常见的SQL、NSQL商业数据库和文件存储系统。
因为官方提供的api不是很好用(主要是不能控制是否异步),本人自己封装了一套登陆、增删改查的方法,经历过几个大项目的测试。
DreamFactory官方网站:www.dreamfactory.com/。
DreamFactoryGithub:github.com/dreamfactorysoftware/dreamfactory。
1.[代码][JavaScript]代码
var DfServer = '192.168.100.216:8888/'; var AppName = 'myApp1'; function loginUser(name, pwd) { var url = DfServer + 'rest/user/session'; var data = { 'email': name, 'password': pwd }; var loginState = false; $.ajax({ dataType: 'json', contentType: 'application/json;charset=utf-8', url: url, data: JSON.stringify(data), cache: false, async: false, type: 'POST', headers: { "X-DreamFactory-Application-Name": AppName }, success: function (response) { $.cookie("GEO_USERNAME", name, { expires: 1, path: '/' }); $.cookie("GEO_Token", response.session_id, { expires: 1, path: '/' }); loginState = true; $.cookie("first_name", response.first_name, { expires: 1, path: '/' }); $.cookie("last_name", response.last_name, { expires: 1, path: '/' }); $.cookie("display_name", response.display_name, { expires: 1, path: '/' }); }, error: function (response) { var msg = "用户密码出错!"; if (response.content && response.content.data && response.content.data.error) { msg += "详细信息:" + response.content.data.error[0].message; } msg = msg.replace(/"/g, '"').replace(/>/g, '>').replace(/</g, '<').replace(/&/g, '&').replace(/'/g, '\''); alert(msg); } }); return loginState; } function getToken() { return $.cookie('GEO_Token'); } function getRecordsByFilter(database, table, filter, success, error, async) { var url = DfServer + 'rest/' + database + '/' + table; var token = getToken(); var data = null; if (filter == null || filter == "" || filter == undefined) data = null; else data = { filter: filter }; if (async == null) async = false; $.ajax({ dataType: 'json', contentType: 'application/json; charset=utf-8', url: url, data: data, cache: false, async: async, type: 'GET', headers: { "X-DreamFactory-Application-Name": AppName, "X-DreamFactory-Session-Token": token }, success: function (response) { if (typeof success !== 'undefined') { success(response); } }, error: function (response) { var msg = "发生未知错误,但是服务器没有提供相关错误信息,请联系系统管理员!"; if (response.content && response.content.data && response.content.data.error) msg = response.content.data.error[0].message; else if (response.responseText) msg = JSON.stringify(response.responseText); msg = msg.replace(/"/g, '"').replace(/>/g, '>').replace(/</g, '<').replace(/&/g, '&').replace(/'/g, '\''); if (typeof error !== 'undefined' && error) { error(msg); } } }); } function getRecordsByFilterOrder(database, table, filter, order, success, error, async) { var url = DfServer + 'rest/' + database + '/' + table; var token = getToken(); var data = null; if (!filter) filter = ""; data = { filter: filter, order: order }; if (async == null) async = false; $.ajax({ dataType: 'json', contentType: 'application/json; charset=utf-8', url: url, data: data, cache: false, async: async, type: 'GET', headers: { "X-DreamFactory-Application-Name": AppName, "X-DreamFactory-Session-Token": token }, success: function (response) { if (typeof success !== 'undefined') { success(response); } }, error: function (response) { var msg = "发生未知错误,但是服务器没有提供相关错误信息,请联系系统管理员!"; if (response.content && response.content.data && response.content.data.error) msg = response.content.data.error[0].message; else if (response.responseText) msg = JSON.stringify(response.responseText); msg = msg.replace(/"/g, '"').replace(/>/g, '>').replace(/</g, '<').replace(/&/g, '&').replace(/'/g, '\''); if (typeof error !== 'undefined' && error) { error(msg); } } }); } function getPageRecordsByFilterOrder(database, table, filter, order, limit, offset, success, error, async) { var url = DfServer + 'rest/' + database + '/' + table; var token = getToken(); var data = null; if (!filter) filter = ""; data = { filter: filter, order: order, include_count: true, limit: limit, offset: offset }; if (async == null) async = false; $.ajax({ dataType: 'json', contentType: 'application/json; charset=utf-8', url: url, data: data, cache: false, async: async, type: 'GET', headers: { "X-DreamFactory-Application-Name": AppName, "X-DreamFactory-Session-Token": token }, success: function (response) { if (typeof success !== 'undefined') { success(response); } }, error: function (response) { var msg = "发生未知错误,但是服务器没有提供相关错误信息,请联系系统管理员!"; if (response.content && response.content.data && response.content.data.error) msg = response.content.data.error[0].message; else if (response.responseText) msg = JSON.stringify(response.responseText); msg = msg.replace(/"/g, '"').replace(/>/g, '>').replace(/</g, '<').replace(/&/g, '&').replace(/'/g, '\''); if (typeof error !== 'undefined' && error) { error(msg); } } }); } function addRecords(database, table, data, success, error, async) { var url = DfServer + 'rest/' + database + '/' + table; var token = getToken(); if (data == null || data == "" || typeof data == 'undefined') return; if (async == null) async = false; $.ajax({ dataType: 'json', contentType: 'application/json;', url: url, data: JSON.stringify(data), async: async, type: 'POST', headers: { "X-DreamFactory-Application-Name": AppName, "X-DreamFactory-Session-Token": token }, success: function (response) { if (typeof success !== 'undefined') { success(response); } }, error: function (response) { var msg = "发生未知错误,但是服务器没有提供相关错误信息,请联系系统管理员!"; if (response.content && response.content.data && response.content.data.error) msg = response.content.data.error[0].message; else if (response.responseText) msg = JSON.stringify(response.responseText); msg = msg.replace(/"/g, '"').replace(/>/g, '>').replace(/</g, '<').replace(/&/g, '&').replace(/'/g, '\''); if (typeof error !== 'undefined' && error) { error(msg); } } }); } function updateRecords(database, table, data, success, error, async) { var url = DfServer + 'rest/' + database + '/' + table; var token = getToken(); if (data == null || data == "" || typeof data == 'undefined') return; if (async == null) async = false; $.ajax({ dataType: 'json', contentType: 'application/json;', url: url, data: JSON.stringify(data), cache: false, async: false, type: 'PUT', headers: { "X-DreamFactory-Application-Name": AppName, "X-DreamFactory-Session-Token": token }, success: function (response) { if (typeof success !== 'undefined') { success(response); } }, error: function (response) { var msg = "发生未知错误,但是服务器没有提供相关错误信息,请联系系统管理员!"; if (response.content && response.content.data && response.content.data.error) msg = response.content.data.error[0].message; else if (response.responseText) msg = JSON.stringify(response.responseText); msg = msg.replace(/"/g, '"').replace(/>/g, '>').replace(/</g, '<').replace(/&/g, '&').replace(/'/g, '\''); if (typeof error !== 'undefined' && error) { error(msg); } } }); } function deleteRecordsByFilter(database, table, filter, success, error, async) { var url = DfServer + 'rest/' + database + '/' + table; var token = getToken(); if (filter == null || filter == "" || typeof filter == 'undefined') return; if (async == null) async = false; var data = { filter: filter }; $.ajax({ dataType: 'json', contentType: 'application/json;', url: url, data: JSON.stringify(data), cache: false, async: false, type: 'DELETE', headers: { "X-DreamFactory-Application-Name": AppName, "X-DreamFactory-Session-Token": token }, success: function (response) { if (typeof success !== 'undefined') { success(response); } }, error: function (response) { var msg = "发生未知错误,但是服务器没有提供相关错误信息,请联系系统管理员!"; if (response.content && response.content.data && response.content.data.error) msg = response.content.data.error[0].message; else if (response.responseText) msg = JSON.stringify(response.responseText); msg = msg.replace(/"/g, '"').replace(/>/g, '>').replace(/</g, '<').replace(/&/g, '&').replace(/'/g, '\''); if (typeof error !== 'undefined' && error) { error(msg); } } }); }
2.[图片] 01.jpg
本文共计1399个文字,预计阅读时间需要6分钟。
DreamFactory是一个为移动端、Web端和物联网终端等应用提供REST API的免费、开源平台。它可以直接将数据库发布为REST服务,简化服务端开发(服务端开发为零)。提供标准化的端点服务。
Dreamfactory可将数据库直接发布为REST服务,节约服务端开发成本(服务端开发为零),提供标准的RESTAPI,支持的常见的SQL、NSQL商业数据库和文件存储系统。
因为官方提供的api不是很好用(主要是不能控制是否异步),本人自己封装了一套登陆、增删改查的方法,经历过几个大项目的测试。
DreamFactory官方网站:www.dreamfactory.com/。
DreamFactoryGithub:github.com/dreamfactorysoftware/dreamfactory。
1.[代码][JavaScript]代码
var DfServer = '192.168.100.216:8888/'; var AppName = 'myApp1'; function loginUser(name, pwd) { var url = DfServer + 'rest/user/session'; var data = { 'email': name, 'password': pwd }; var loginState = false; $.ajax({ dataType: 'json', contentType: 'application/json;charset=utf-8', url: url, data: JSON.stringify(data), cache: false, async: false, type: 'POST', headers: { "X-DreamFactory-Application-Name": AppName }, success: function (response) { $.cookie("GEO_USERNAME", name, { expires: 1, path: '/' }); $.cookie("GEO_Token", response.session_id, { expires: 1, path: '/' }); loginState = true; $.cookie("first_name", response.first_name, { expires: 1, path: '/' }); $.cookie("last_name", response.last_name, { expires: 1, path: '/' }); $.cookie("display_name", response.display_name, { expires: 1, path: '/' }); }, error: function (response) { var msg = "用户密码出错!"; if (response.content && response.content.data && response.content.data.error) { msg += "详细信息:" + response.content.data.error[0].message; } msg = msg.replace(/"/g, '"').replace(/>/g, '>').replace(/</g, '<').replace(/&/g, '&').replace(/'/g, '\''); alert(msg); } }); return loginState; } function getToken() { return $.cookie('GEO_Token'); } function getRecordsByFilter(database, table, filter, success, error, async) { var url = DfServer + 'rest/' + database + '/' + table; var token = getToken(); var data = null; if (filter == null || filter == "" || filter == undefined) data = null; else data = { filter: filter }; if (async == null) async = false; $.ajax({ dataType: 'json', contentType: 'application/json; charset=utf-8', url: url, data: data, cache: false, async: async, type: 'GET', headers: { "X-DreamFactory-Application-Name": AppName, "X-DreamFactory-Session-Token": token }, success: function (response) { if (typeof success !== 'undefined') { success(response); } }, error: function (response) { var msg = "发生未知错误,但是服务器没有提供相关错误信息,请联系系统管理员!"; if (response.content && response.content.data && response.content.data.error) msg = response.content.data.error[0].message; else if (response.responseText) msg = JSON.stringify(response.responseText); msg = msg.replace(/"/g, '"').replace(/>/g, '>').replace(/</g, '<').replace(/&/g, '&').replace(/'/g, '\''); if (typeof error !== 'undefined' && error) { error(msg); } } }); } function getRecordsByFilterOrder(database, table, filter, order, success, error, async) { var url = DfServer + 'rest/' + database + '/' + table; var token = getToken(); var data = null; if (!filter) filter = ""; data = { filter: filter, order: order }; if (async == null) async = false; $.ajax({ dataType: 'json', contentType: 'application/json; charset=utf-8', url: url, data: data, cache: false, async: async, type: 'GET', headers: { "X-DreamFactory-Application-Name": AppName, "X-DreamFactory-Session-Token": token }, success: function (response) { if (typeof success !== 'undefined') { success(response); } }, error: function (response) { var msg = "发生未知错误,但是服务器没有提供相关错误信息,请联系系统管理员!"; if (response.content && response.content.data && response.content.data.error) msg = response.content.data.error[0].message; else if (response.responseText) msg = JSON.stringify(response.responseText); msg = msg.replace(/"/g, '"').replace(/>/g, '>').replace(/</g, '<').replace(/&/g, '&').replace(/'/g, '\''); if (typeof error !== 'undefined' && error) { error(msg); } } }); } function getPageRecordsByFilterOrder(database, table, filter, order, limit, offset, success, error, async) { var url = DfServer + 'rest/' + database + '/' + table; var token = getToken(); var data = null; if (!filter) filter = ""; data = { filter: filter, order: order, include_count: true, limit: limit, offset: offset }; if (async == null) async = false; $.ajax({ dataType: 'json', contentType: 'application/json; charset=utf-8', url: url, data: data, cache: false, async: async, type: 'GET', headers: { "X-DreamFactory-Application-Name": AppName, "X-DreamFactory-Session-Token": token }, success: function (response) { if (typeof success !== 'undefined') { success(response); } }, error: function (response) { var msg = "发生未知错误,但是服务器没有提供相关错误信息,请联系系统管理员!"; if (response.content && response.content.data && response.content.data.error) msg = response.content.data.error[0].message; else if (response.responseText) msg = JSON.stringify(response.responseText); msg = msg.replace(/"/g, '"').replace(/>/g, '>').replace(/</g, '<').replace(/&/g, '&').replace(/'/g, '\''); if (typeof error !== 'undefined' && error) { error(msg); } } }); } function addRecords(database, table, data, success, error, async) { var url = DfServer + 'rest/' + database + '/' + table; var token = getToken(); if (data == null || data == "" || typeof data == 'undefined') return; if (async == null) async = false; $.ajax({ dataType: 'json', contentType: 'application/json;', url: url, data: JSON.stringify(data), async: async, type: 'POST', headers: { "X-DreamFactory-Application-Name": AppName, "X-DreamFactory-Session-Token": token }, success: function (response) { if (typeof success !== 'undefined') { success(response); } }, error: function (response) { var msg = "发生未知错误,但是服务器没有提供相关错误信息,请联系系统管理员!"; if (response.content && response.content.data && response.content.data.error) msg = response.content.data.error[0].message; else if (response.responseText) msg = JSON.stringify(response.responseText); msg = msg.replace(/"/g, '"').replace(/>/g, '>').replace(/</g, '<').replace(/&/g, '&').replace(/'/g, '\''); if (typeof error !== 'undefined' && error) { error(msg); } } }); } function updateRecords(database, table, data, success, error, async) { var url = DfServer + 'rest/' + database + '/' + table; var token = getToken(); if (data == null || data == "" || typeof data == 'undefined') return; if (async == null) async = false; $.ajax({ dataType: 'json', contentType: 'application/json;', url: url, data: JSON.stringify(data), cache: false, async: false, type: 'PUT', headers: { "X-DreamFactory-Application-Name": AppName, "X-DreamFactory-Session-Token": token }, success: function (response) { if (typeof success !== 'undefined') { success(response); } }, error: function (response) { var msg = "发生未知错误,但是服务器没有提供相关错误信息,请联系系统管理员!"; if (response.content && response.content.data && response.content.data.error) msg = response.content.data.error[0].message; else if (response.responseText) msg = JSON.stringify(response.responseText); msg = msg.replace(/"/g, '"').replace(/>/g, '>').replace(/</g, '<').replace(/&/g, '&').replace(/'/g, '\''); if (typeof error !== 'undefined' && error) { error(msg); } } }); } function deleteRecordsByFilter(database, table, filter, success, error, async) { var url = DfServer + 'rest/' + database + '/' + table; var token = getToken(); if (filter == null || filter == "" || typeof filter == 'undefined') return; if (async == null) async = false; var data = { filter: filter }; $.ajax({ dataType: 'json', contentType: 'application/json;', url: url, data: JSON.stringify(data), cache: false, async: false, type: 'DELETE', headers: { "X-DreamFactory-Application-Name": AppName, "X-DreamFactory-Session-Token": token }, success: function (response) { if (typeof success !== 'undefined') { success(response); } }, error: function (response) { var msg = "发生未知错误,但是服务器没有提供相关错误信息,请联系系统管理员!"; if (response.content && response.content.data && response.content.data.error) msg = response.content.data.error[0].message; else if (response.responseText) msg = JSON.stringify(response.responseText); msg = msg.replace(/"/g, '"').replace(/>/g, '>').replace(/</g, '<').replace(/&/g, '&').replace(/'/g, '\''); if (typeof error !== 'undefined' && error) { error(msg); } } }); }

