首先表明一下身份,本人是Android前端开发人员,本篇只做合理性探讨,不进行人身攻击;

其次希望各位大神进行点评!点评!点评!  

我们讨论一下接口的两种返回方式,直接举例说明一下,假设书籍信息表有30个字段,现在有各种排行榜和列表都需要显示书籍基本信息,但显示的属性一般会有5-8个左右,各个排行榜显示的字段内容有可能不一样,每个版本显示的属性也可能不一样,那么问题来了,是每次排行榜和列表都返回所有的30个字段还是每次按需返回相关字段呢?

方案一:每次列表和排行榜都返回所有字段

优点:接口稳定,不需要每次升级增加或修改字段

缺点:字段冗余,消耗流量

方案二:按需返回相关字段

优点:减少冗余字段,数据不乱,结构清晰

缺点:升级版本或需求改变的时候接口需要作对应调整

我个人趋向于采用第二种方式,原因就是方案二的优点比较适合移动端开发规范,而针对于方案二的缺点,我建议服务器端建立按字段返回内容的框架,举例说明A排行榜需要BookId,BookName,BookScroe,另一个排行榜B需要返回BookId,BookName,BookDesc,那么后端实现逻辑可简写为:

Public object getA_List() //获取排行榜A

{

Return getBookInfo(new String[]{BookId, BookName, BookScroe});

}

Public object getB_List() //获取排行榜B

{

Return getBookInfo(new String[]{BookId, BookName, BookScroe});

}

Public object getBookInfo (String[] m_Param) //统一获取书籍信息的方法

{

//实现逻辑

}

同理、同一个排行榜A升级版本只需做分支判断就好了;

另外这个getBookInfo(String[] m_Param)在服务器端定义完后,是否客户端根据每次变化,调用getA_List()方法的时候把需要的后台字段,,比如后台定义方法如下:

Public object getA_List(String[] m_Param) //获取排行榜A

{

Return getBookInfo(m_Param);

}

那么后端接口就相对稳定,而前台也可以灵活地根据需要的字段来进行获取了?

我个人意见呢依然是让服务器端来处理这类逻辑,理由:

1、 我们需要做的客户端尽量是瘦客户端;

2、 前台人员不需要关注后台数据表的结构设计,能够快速地进行效果和流畅度的开发,也就是说前端和后端应该是透明的;

3、 考虑到安全性问题,因为如果前端传递参数的话后台数据库的结构表都暴露出来了。

最后,还是希望各位大神不吝赐教!

Android前端人员与后台开发的撕逼(一)的更多相关文章

  1. android支付宝app支付(原生态)-包括android前端与java后台

    本文讲解了 android开发的原生态app集成了支付宝支付, 还提供了java后台服务器处理支付宝支付的加密代码, app前端与java后台服务器使用json数据格式交互信息,java后台服务主要用 ...

  2. android 集成支付宝app支付(原生态)-包括android前端与java后台

    本文讲解了 android开发的原生态app集成了支付宝支付, 还提供了java后台服务器处理支付宝支付的加密代码, app前端与java后台服务器使用json数据格式交互信息,java后台服务主要用 ...

  3. SpringBoot技术栈搭建个人博客【后台开发】

    前言:在之前,我们已经完成了项目的基本准备,那么就可以开始后台开发了,突然又想到一个问题,就是准备的时候只是设计了前台的RESTful APIs,但是后台管理我们同样也是需要API的,那么就在这一篇里 ...

  4. 【转】无后端(nobackend):前端优先的Web开发【译】

    每个应用都由两样东西构成:该应用独有的功能和所有应用共有的功能,比方说用户注册.登录.忘记密码等.而从用户的角度出发,那些独有的功能归结起来就是用户界面以及系统的行为模式.而在视觉表象之后的功能,用户 ...

  5. 【转】C++后台开发之我见

    工作也快两年了,偶然看到自己以前写过的一些技术博客,发现自己自毕业后一直没有更新过自己的技术博客,趁现在是刚过完春节快要回公司工作之际,谈谈我个人对后台开发的一些个人见解,希望能够对在校的学生或者刚刚 ...

  6. (67)c++后台开发

    还记得自己在学校的时候,一直都比较注重的是:编程语言+数据结构与算法.没错,对于一个在校的计算机专业的学生,这是很重要的方面.但是,这往往不够,或许是因为毕业前一直没有进入企业实习,以至于自己在毕业之 ...

  7. 学了C++不知道怎么搞后台开发?先看看这份学习路线吧!

    作者:AJ 在去年结束的秋季招聘中,后台开发或服务器开发的岗位需求一度火热,甚至超过了算法岗.不少同学从诸神黄昏的算法岗战场上退下,转向更偏向工程能力的后台开发岗,从而造成后台开发岗位竞争的大爆发. ...

  8. Android IOS WebRTC 音视频开发总结(六十)-- 您为什么招不到适合的音视频人才

    本文主要介绍音视频行业招聘现状,文章最早发表在我们的微信公众号上,详见这里,欢迎关注微信公众号blackerteam,更多详见www.blackerteam.com 有过音视频人才招聘经验的应该都深有 ...

  9. Android IOS WebRTC 音视频开发总结(四六)-- 从另一个角度看国内首届WebRTC大会

    文章主要从开发者角度谈国内首届WebRTC大会,支持原创,文章来自博客园RTC.Blacker,支持原创,转载必须说明出处,更多详见www.rtc.help. -------------------- ...

随机推荐

  1. XE3随笔19:实例 - 借用 Google 实现全文翻译

    调用 Google 翻译的地址格式: http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=" + ...

  2. ChartServices Dev图形封装

    .工具类ChartServices using System; using System.Data; using System.Drawing; using DevExpress.XtraCharts ...

  3. SQL 列转行的实现

    --列转行,逗号拼接指定列的值Oracle中写法:select wmsys.wm_concat(Field1) from TableASQL Server中写法:SELECT STUFF(( SELE ...

  4. javascript:history.go()和History.back()的区别(转载)

    javascript:history.go()和History.back()的区别       <input type=button value=刷新 onclick="window. ...

  5. MySQL 创建表

     MySQL中create table语句的基本语法是: CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name [(create_definition,. ...

  6. URAL1132_Square Root

    求解方程,x^2=n (mod P). 解二次同余方程的步骤: 1.首先判断勒让德符号(n,p)是否的等于1,即n^((p-1/2)=1 (mod p)是否成立.不成立显然无解.(略) 2.任取0-( ...

  7. JS获得URL超链接的参数值

    /** * 获取指定URL的参数值 * @param url  指定的URL地址 * @param name 参数名称 * @return 参数值 */ function getUrlParam(ur ...

  8. 零值初始化&字符串常数作为函数模板参数

    1.在定义一个局部变量时,并希望该局部变量的初始化一个值,可以显示调用其默认构造函数,使其值为0(bool类型默认值为false). template <typename T> void ...

  9. MAT-Java内存分析工具

    对Mat工具的详细介绍,引用博文:http://my.oschina.net/biezhi/blog/286223 下载地址:http://www.eclipse.org/mat/downloads. ...

  10. React Native填坑之旅--Navigation篇

    React Native的导航有两种,一种是iOS和Android通用的叫做Navigator,一种是支持iOS的叫做NavigatorIOS.我们这里只讨论通用的Navigator.会了Naviga ...