App 和 Web 的通用接口设计该怎么设计

10:22 提问
给手机app做后台接口, 要用到java web什么技术?
就是说要学java web哪些内容才能开发出接口给手机app使用。
我只学过spring ioc,spring aop,还有spring事务管理,spring 数据库访问。感觉很迷茫啊!!
当然基本的JDBC,Servlet,JSP都会的。
按赞数排序
我知道了,学rest web服务方面的内容。
现在做接口好像很多使用REST风格的服务
有好心人回答么?我新手项目紧急啊!!
类,方法,方法全部都是 ,传入数据,查询数据库,返回数据;就这么简单啊
你也可以用Bmob做后台
其他相关推荐其他回答(2)
这种API,我们一般采用的是,服务端同时提供几套标准,比如JSON,XML,然后不同客户端自己选择使用。
如果都不行,那就只能再定制了。
收获园豆:1
问题在于,部分操作不同,所以相同的还是很多了。这种情况下,我觉得可能做一个接口,在接口内判断平台可能开发要方便些,而且重复代码也不会太多。但是要注意,就是修改代码的时候,要小心一点,建议配合相关测试来保证修改一个平台逻辑的时候,不要影响到另一个。
收获园豆:2
园豆:34789
&&&您需要以后才能回答,未注册用户请先。Web API应用架构设计分析(1) - 伍华聪 - 博客园
随笔 - 533, 文章 - 20, 评论 - 7483, 引用 - 20
Web API 是一种应用接口框架,它能够构建HTTP服务以支撑更广泛的客户端(包括浏览器,手机和平板电脑等移动设备)的框架,&ASP.NET Web API 是一种用于在 .NET Framework 上构建 RESTful 应用程序的理想平台。本文主要以ASP.NET Web API 的框架实现来介绍整个Web API应用架构设计,但不局限于.NET的技术。
1、Web API的核心层设计
在目前发达的应用场景下,我们往往需要接入Winform客户端、APP程序、网站程序、以及目前热火朝天的微信应用等,这些数据应该可以由同一个服务提供,这个就是我们所需要构建的Web API平台,基于上述的需求,很多企业的需求都是以Web API优先的理念来设计整个企业应用体系的。Web API作为整个纽带的核心,在整个核心层需要考虑到统一性、稳定性、以及安全性等方面因素。
从上图我们可以看到,整个外围的应用场景围绕着Web API核心层构建,如果我们把它换一种方式表达,那么也就是下面的设计图示,我们把微信应用、APP应用、Web应用、Winform应用,作为Web API接口层上面的一个界面应用层来处理,这样就是基于一个API接口层,接入多个或多种方式的界面应用层,从而构建企业丰富的数据服务应用。
由于Web API层作为一个公共的接口层,我们就很好保证了各个界面应用层的数据一致性,如果考虑到响应式的集成处理,我们甚至可以把微信应用、APP应用、Web应用做层一套Web程序,即使为了利用各自应用的特殊性,也可以把这些应用做的很相似,这样就给用户提供了一个统一的界面表示方式,极大提高客户使用的界面体验效果,用户几乎不需要额外的界面学习,就可以熟悉整个应用体系的各个模块使用。
在整个WebAPI下面可以通过业务逻辑层整合数据存储和外部接口访问两部分工作,也就是数据访问层、外部接口层这样的分层概念,如果扩展开来,我们还可以提供给客户一些文件、图片、视频等资料的文件存储,类似微信的多媒体API接口一样,这样整个Web API的接口层就能为所有接入的客户端提供丰富的数据接口,从而实现强大的、灵活的接入。
上面提到了如果考虑到响应式的集成处理,我们甚至可以把微信应用、APP应用、Web应用做层一套Web程序,其实APP应用层,可以分为两种类型,一种是原生的APP类型,采用原生语言如Object C来开发IOS应用,采用java来开发安卓的原生应用一样;还有一种是封装一个入口的原生框架+后台响应式Web页面,如下图所示。
对比原生应用,采用入口框架+响应式页面的方式,开发效率非常快、升级维护成本也可以降低很多,比较Web开发总比使用原始APP开发快捷得多。
从上面的架构分析来看,我们的Web API作为核心层,可以在上面开发我们各种企业业务应用,
在目前比较热门的会员管理、客户管理等方面,结合微信的应用催化剂,就可以做的更加符合移动的潮流,从而实现我们&互联网+&的应用落地。
2、Web API层在Winform混合框架中的应用
同样,在Winform界面里面,我们除了可以利用直接访问数据库方式,以及采用访问分布式WCF服务的方式接入,还可以使得它能够访问Web API的数据服务,从而构建成一个适应性更加广泛、功能更加强大的混合式开发框架模式。
安全性方便,直接访问数据库方式,没有在网络上公开接口,它们只是在单机或者局域网安全的环境运行,因此只需要确保数据库的安全即可,一般可以通过加密连接字符串方式实现一定的限制即可。
WCF服务的安全性,可以通过X509证书方式实现校验,也还可以利用自定义的用户名、密码验证方式进行检查等等。
对于Web API,由于它提供的是一种无状态的接口访问,而且往往Web API一般为了多种客户端接入的需要,可能需要发布在公网上进行访问,因此我们需要更加注重Web API接口层的安全性,这方面我们后面详细介绍。
也就是新型的混合式开发框架,除了直连数据库访问的传统模式,WCF分布式访问的WCF服务访问模式,还可以接入API分布式访问的Web API接口模式,他们的关系构成了一个完整的Winform应用体系,如下图所示。
下面图示是我的基于传统访问数据库方式和分布式WCF数据服务访问方式的一个模块分析图,围绕着混合型框架的核心,我们可以构建很多松散耦合的模块,从而能够为我们Winform应用的开发集成提供更高的开发效率。
混合型框架可以看成是Winform框架高级版本,除了它本身是一个完整的业务系统外,它外围的所有辅助性模块均(如通用权限、通用字典、通用附件管理、通用人员管理。。。。)都实现了这种混合型的框架,因此使用非常方便,整个框架如果简化来看,就是在原有的Winform界面层,用接口调用方式,避免和业务逻辑类的紧耦合关系。由于它是通过接口方式的调用方式,它本身又可以通过配置指定指向WCF的实现,因此也囊括了WCF框架的一切特点。在完成Web API层的开发后,基于Web API层的整合就是我下一个阶段的工作了。
我们进一步分析混合式框架的实现细节,原来考虑的传统Winform访问数据库和WCF服务访问方式,就是通过一个配置模块,确定是采用直接访问数据库方式,还是访问WCF服务的方式,它们两者是统一到一个Facade接口门面层上,如果考虑到Web API层,基于混合式的架构,也就是在这个Facade接口门面层上增加多一个Web API的接口的封装成即可。具体整个框架的架构图如下所示。在 SegmentFault,解决技术问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。
一线的工程师、著名开源项目的作者们,都在这里:
获取验证码
已有账号?
问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
1.之前web和app的接口是独立的,随着业务的变化,web和app越来越多的业务是相似或者一样的,考虑把web和app的接口合并2.目前一个主要问题是web和app的验证权限方式,有所不同:
app通过userid+token(用户在登录后,服务器会返回一个userid+token,每次请求其他接口都需要带上这2个参数,以验证用户是否合法)
web的通过session的方式来验证
目前的想法是对于web进行更改,采用类似的userid+token的方式,当中还有一些问题,userid+token存放在哪里合适?cookie吗?有什么其他的更好的方法。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
真的前后端分离的话,用jwt吧,token存表里,后端写一个中间件在路由进行鉴权,判断APP有很多方式
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
合理的改良方案应该是把认证+授权单独抽取成一个服务,无论何种客户端,均使用该服务进行认证+授权
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
session的方式也是把sessionid在前端存在cookie里,所以有区别吗?
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
已Api的形式 编写接口
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
个人认为你使用session和使用cookie其实区别不大,可以统一使用token作校验了
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
在请求认证的时候,可以带上客户端类型的参数,后端接到请求判断,如果是app就用token的方式验证,如果是web就用session的方式验证。至于接口合并,可以用restful api写接口
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
这个token应该是有时限的吧,一定时间后同样的userid用之前取到的token会失效。我目前做的项目中正好有这种接口,我们处理的方式是用redis缓存机制,设置一个key value记录,使其存活时间为xx秒。这样配置以后,第一次访问接口的时候,获取一个token存好,然后每次访问的时候就从redis数据库取一下token,若取值为None,说明token过期了,则再获取一次token保存到redis。若不为None就用这个token正常使用。ps:token在redis存在时间要设置得比token的有效时间短一点,这样避免toekn失效的错误。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
web当然可以采用userid+token了,我现在基本的做法都是登陆后,生成随机数(这个随机数可以自己选择合适的方法),放到redis中,并设置过期时间,这样不就很好的解决你的问题了吗
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
其实最好办法,你独立一个服务,专门提供服务接口,然后web一套api接口,移动端一套API接口,就算后续改动也不会影响其他的
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
统一接口,采取token与userid的方式验证。app应用不用改,web可以把token放到session中,每次web请求接口时候,用户从session拿出放到请求往后走。
同步到新浪微博
分享到微博?
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:

我要回帖

更多关于 1150 1155接口通用么 的文章

 

随机推荐