android 首页接口设计方案,Android开发最佳实践——1.接口设计
Android开发最佳实践——1.接口设计
一个项目刚开始的时候,最需要确认的就是接口设计了:数据如何传递,使用什么格式什么协议乃至如何保证安全性。如果一个项目的接口设计不合理——比如没有考虑到安全性,后期为了增加安全验证又要对部分 API 推倒重做,那么前端(泛指 Android、iOS 以及 Web)就必须对整个项目进行改动,甚至可能导致之前发布的版本无法使用的囧事。
那么本文就谈谈我认为的一个好的接口应该是如何设计的。
设计
使用 RESTful 风格的 API 设计。
协议
使用 HTTPS 协议,保证 HTTP 的方便的同时保证一定的安全性。
域名
路径和资源
在 Restful 风格的 API 中,每个路径都代表着互联网中的一个资源。所以 URL 地址中应该使用名词,并且因为大多是资源集合,所以应该使用复数形式。如果是有从属关系的资源,应该服从从属关系,下面给出几个例子:
HTTP 动词
HTTP 动词可以完美对应数据库的增删查改操作,于是我们就把 HTTP 动词和我们的增删查改操作对应起来:
GET:查询数据
POST:增加数据
PUT:更新数据(客户端提供改变后的完整资源)
PATCH:更新数据(客户端更新某几条属性)
DELETE:删除数据
Query 查询
在 GET 查询的时候我们不可能一次性获取所有资源,那么我们需要提供一些查询条件。
下面是一些常用的查询:
?index=2&size=20 :第二页每页20条
?sortby=name&order=asc :按指定规则与顺序排序
全局信息
全局通用信息应该放在请求头里,避免使用 Query 拼接,如:
APPID(Android/iOS/H5)
APPVER(版本号)
CHANNEL(渠道号)
APP-BUILD-NUM(内部小版本号)
TOKEN
NETWORK(网络环境)
LANGUAGE(语言)
传输数据
Request
使用 json 格式传输数据,如果需要上传文件则使用表单的形式提交。
Response
使用 json 格式传输数据,Content-Type一致设定为application/json。
名字
类型
含义
code
int
状态码
message
String
状态信息
data
List or Object
数据
time
long
时间戳
具体的响应如下:
{
'code': 0,
'message': '获取成功',
'data': [{}, {}, {}], // 返回一个集合
'time': 1472435695000
}
或者返回某一个数据:
{
'code': 0,
'message': '获取成功',
'data': {}, // 返回一个对象
'time': 1472435695000
}
安全
为了保证客户端与服务端通信的安全,我们使用 HTTPS 协议。
在身份认证上使用 Oauth 2.0 协议,用户登录之后在客户端保存一份 token,避免在客户端持久化存储用户名和密码。之后每次访问需要身份认证的 API 时,必须携带 token 访问
避免空指针
API 设计的时候应该合理帮助前端避免空指针异常,在一些字段或者属性为空的时候应该返回默认值:如 String 返回"", int 返回0, Object 返回 {}, Array or List 返回 []。
参考
android 首页接口设计方案,Android开发最佳实践——1.接口设计相关推荐
- Android开发最佳实践
原文链接:https://github.com/futurice/android-best-practices 转载来源:http://blog.csdn.net/asce1885/article/d ...
- Android开发最佳实践---Futurice之见
原文链接:https://github.com/futurice/android-best-practices 本文是Futurice公司的Android开发人员总结的最佳实践,遵循这些准则可以避免重 ...
- Android开发最佳实践《IT蓝豹》
Android开发最佳实践 移动开发Android经验分享应用GoogleMaterial Design 摘要:前 段时间,Google公布了Android开发最佳实践的一系列课程,涉及到一些平时 ...
- 《Web前端开发最佳实践》——1.2 Web前端开发现状
本节书摘来自华章计算机<Web前端开发最佳实践>一书中的第1章,第1.2节,作者:党 建 更多章节内容可以访问云栖社区"华章计算机"公众号查看. 1.2 Web前端开发 ...
- QCon北京2015:移动开发最佳实践专题前瞻
从社交到游戏,从电商到O2O,移动互联网已经深入渗透到各行各业,而外卖和打车市场,更是正在经历着一些深刻的变化.巨额的融资和庞大的用户群当然是吸引眼球的,但是小团队背后的故事或许也能让你眼前一亮.不同 ...
- Spark企业级开发最佳实践
课程介绍 本课程是世界上第一Spark企业级最佳实践课程,课程包含: Spark的架构设计: Spark编程模型: Spark内核框架源码剖析: Spark的广播变量与累加器: Shark的原理和 ...
- web前端开发最佳实践_Web开发人员和设计师的最佳黑色星期五优惠
web前端开发最佳实践 As Black Friday 2016 is here, we thought that web developers and web designers should al ...
- 《微信公众平台开发最佳实践》——第3章 基 础 接 口 3.1 接收用户消息
本节书摘来自华章出版社<微信公众平台开发最佳实践>一 书中的第3章,第3.1节,作者:方倍工作室,更多章节内容可以访问云栖社区"华章计算机"公众号查看. 第3章 基 础 ...
- 《微信公众平台开发最佳实践》——2.4 本章小结
本节书摘来自华章出版社<微信公众平台开发最佳实践>一 书中的第2章,第2.4节,作者:方倍工作室,更多章节内容可以访问云栖社区"华章计算机"公众号查看. 2.4 本章小 ...
最新文章
- MySQL数据库锁构建_MySQL数据库InnoDB存储引擎中的锁机制
- python使用gevent实现协程
- 1.cocos2dx 3.2环境搭建
- 一线互联网公司的工程师们更应该增长技术以外的职场经验
- Android开发笔记(一百零五)社会化分享SDK
- 双击计算机桌面误删,手提电脑双击界面自动删除是哪里问题
- SpringBoot四大核心组件,你了解多少
- python视频操作:下载、选取特定帧、批量导入ppt及硬字幕提取
- ftp免费下载工具,4个好用的ftp免费下载工具
- html模拟在线股票走势,基于Html5的股票行情k线图源码
- 2022/03/03js作业第一个不同宽度变色第二个是输入几年几月几日判断是今年的第几天(不算闰年2月为28日)
- c++ opencv 彩色图rgb 转换hsv 再通道分离
- 博客代码总算要结束了!
- python学习第八天---用Django框架创建可重用注册登录系统
- 学习 Golang 开发,需要掌握这几个开源框架
- 【实体对齐·综述】A Benchmarking Study of Embedding-based Entity Alignment for Knowledge Graphs
- matlab 二维空间变换-maketform imtransform 用法
- 微信小程序的文件结构 —— 微信小程序教程系列(1)
- Jackson解析与生成Json字符串
- 游戏音乐外包是如何制作音乐的?
热门文章
- 我将其名称作为字符串时如何执行JavaScript函数
- 常用的计算机显示器按其显像原理可分为什么,计算机组装与维护的试卷C答案...
- esc centos 安装mysql_CentOS7安装Mysql
- Android:模拟器使用PC地址上网设置,且访问本地服务器
- html语言汇总,第三讲HTML语言全面介绍汇总.ppt
- python size和count_groupby 的妙用(注意size和count)
- qt opengl 2d绘图效率_Qt趣味开发之打造一个3D名字渲染小工具
- socket不能bind请求的地址_深入浅出讲解:php的socket通信
- switch语句(JS)
- PrepareStatement对象(新增、删除、更新、查询、防止SQL注入)