APP接口设计规范

article/2025/11/9 5:48:25

APP接口设计规范

  • 效率
  • 安全
  • 版本兼容性
  • 面向对象设计
  • 数据格式Json
  • 服务端的异常处理
  • https协议

1.效率

APP对服务器端要求是比较严格的,在移动端有限的带宽条件下,要求接口响应速度要快,所有在开发过程中尽量选择效率高的框架,对数据要求也比较严格,app需要什么数据就传什么数据,不可多传,过多的数据量影响处理速度,最重要的是影响传输效率。接口要规范,以面向对象的思想设计接口。
##2.安全
接口请求成功或失败,需要有明确的标识符来表示。并且对错误原因进行描述。同时因为客户端可能是多语言的,错误原因应该设计为errorCode,由客户端根据errorCode来显示成对应的语言;此外,不允许出现同一个接口返回不同数据格式的json包;为应对被抓包的风险,客户端和服务端也需要有一套约定的算法加密,可以是对称加密,非对称加密,也可以反复加密,此外,对有必须登录要求的私密性app,比如社交类的,金融类的app,需要在登陆后返回token,所有接口请求都需要带token参数,当有第二只手机登录这个账号,则新生成一个token,旧token失效,失效的请求返回失效的返回code,让客户端退出至登录页面,如果一个账号在固定一段时间里频繁换token,那么就要考虑这个账号被盗的可能性。
##3.版本兼容性
接口不可能永远不变,它会随着需求的变化而做出相应的变动。接口的变化一般会有几种:
数据的变化,比如增加了旧版本不支持的数据类型
参数的变化,比如新增了参数
接口的废弃,不再使用该接口了
为了适应这些变化,必须得做接口版本的设计。实现上,一般有两种做法:
1.每个接口有各自的版本,一般为接口添加个version的参数。
2.整个接口系统有统一的版本,一般在URL中添加版本号,比如http://api.demo.com/v2。
大部分情况下会采用第一种方式,当某一个接口有变动时,在这个接口上叠加版本号,并兼容旧版本。App的新版本开发传参时则将传入新版本的version。
如果整个接口系统的根基都发生变动的话,比如微博API,从OAuth1.0升级到OAuth2.0,整个API都进行了升级。
有时候,一个接口的变动还会影响到其他接口,但做的时候不一定能发现。
##4.面向对象设计
我们在对接口做设计的时候,要充分考虑客户端的界面显示,比如客户端的界面显示是一个列表,那么json数据格式对应的就应该是**[]**数据类型,这里需要补充一下,Json的值只有六种数据类型:

  • Number:整数或浮点数
  • String:字符串
  • Boolean:true 或 false
  • Array:数组包含在方括号[]中
  • Object:对象包含在大括号{}中
  • Null:空类型

像java里面的Date类型,那肯定是需要做转化的
我是做二手车app的,对于车子面向对象举例,以下有两种设计模式
这里写图片描述
我的建议是第一种设计模式,该对象对应的json包为
{
“brandName”:“奥迪”,
“carModel”:“SUV”,
“emissionStandard”:“国五”,
“carOwner”:{
“name”:“张三”,
“drivingYears”:“5年”,
“id”:“**”
}
}
这样的设计更加符合客户端MVC的设计模式,如果我们有这样一个功能,点击车主能在二级页面看到车主的信息,那么我们只要将车主的模型传到第二个页面即可。那么这样将大大减少客户端的数据处理时间。
##5.数据格式Json

服务器返回的数据结构,一般为:
{
code:200
message: “success”
data: { key1: value1, key2: value2, … }
}

code: 状态码,200表示成功,非0表示各种不同的错误,可自定义code,客户端和服务端约定即可。
message: 描述信息,成功时为"success",错误时则是错误信息
data: 成功时返回的数据,类型为对象 , 因此,data的返回必须是{}的格式,或者传一个null,如果Object类型变成了String类型,那么肯定是报错的。

##6.服务端的异常反馈
服务端的程序在运行的时候,可能因为一个数据的转化或空指针异常什么的,都不能让程序奔溃,需要捕获异常并对异常进行处理,并返回明确的数据状态信息,不管是成功的,还是失败的,都必须要有数据返回给APP客户端,否则,接口的协议失去了所有的意义

##7.https协议
对于敏感的api接口,需使用https协议
https是在http超文本传输协议加入SSL层,它在网络间通信是加密的,所以需要加密证书。

https协议需要ca证书,一般需要交费。


http://chatgpt.dhexx.cn/article/iSeKfDbJ.shtml

相关文章

TP6+JWT开发APP接口

1. 开发环境 PHP框架: ThinkPHP6操作系统: MacOsWeb服务器: Nginx 2. APP接口 2.1. 简介 客户端与服务端进行数据交互的通道, 大部分APP接口都是通过HTTP协议通信的 2.2. HTTP通信的三要素 URL 通信地址Method 通信方式(GET|POST|PUT|DELETE)Params 通信的内容 2.3 APP接…

快速开发一个混合APP(Hybrid APP)

混合开发APP(Hybrid APP)简单说就是将原生功能封装成JS接口,前端通过调用接口实现功能。前端使用html来开发APP,可以实现自动更新,一套代码同时生成Android和iOS两端安装包,开发速度快,用户体验…

Hybrid App开发 四大主流平台

Hybrid App在过去的两年中已经成为移动界的核心话题,但是作为一名Web开发者来说要如何站在移动互联网的浪潮之巅呢?是选择学习原生开发,研究Java、 Object-C、C#等语言,还是选择继续使用网页开发,容忍HTML5功能的局限性…

whatsapp协议api接口

测试demo:http://39.109.122.117:8081/login Whatsappapi 一、登录注册 登录 发送验证码 效验短信验证码 查询是否封号 获取版本号 查询是否封号(商业版) 发送验证码(商业版) 效验短信验证码(商业…

第一次做APP接口开发过程总结

关于平湖人社APP后台开发总结APP后台接口开发我总结出以下几个部分: 需求分析与整理分析业务需求涉及的模块功能与数据库关联表接口开发文档大致编写并提交产品与APP开发人员 1.主要是webservise 地址:http://XXXX/services/SbcxWebservice?wsdl2.接口函数统一为 sbp_sbcx_XXX…

做APP接口开发过程总结

关于平湖人社APP后台开发总结 APP后台接口开发我总结出以下几个部分: 需求分析与整理 分析业务需求涉及的模块功能与数据库关联表 接口开发文档大致编写并提交产品与APP开发人员 1.主要是webservise 地址:http://XXXX/services/SbcxWebservice?wsdl 2.接口函数统一为 sbp_sbcx…

java性能优化案例——面试可能用得到

一、背景 1.1 业务背景 支付宝卡包存放着用户的会员卡和优惠券。无论是卡券cell,还是卡券详情,都是通过静态模板配置加上动态可变数据,最终呈现给终端用户的。 下面【图1】展现了卡券数据在C端用户的展现形式,【图2】表示了C端…

Java性能优化可算是讲明白了,优化权威指南就是强

在JAVA程序中,性能问题的大部分原因并不在于JAVA语言,而是程序本身。养成良好的编码习惯非常重要,能够显著地提升程序性能。 Java是目前软件开发领域中使用最广泛的编程语言之一。Java应用程序在许多垂直领域(银行、电信、医疗保…

面试官:关于Java性能优化,你有什么技巧

通过使用一些辅助性工具来找到程序中的瓶颈,然后就可以对瓶颈部分的代码进行优化。 一般有两种方案:即优化代码或更改设计方法。我们一般会选择后者,因为不去调用以下代码要比调用一些优化的代码更能提高程序的性能。而一个设计良好的程序能…

JAVA性能优化思路探究,让程序超顺畅

1、背景介绍 一个系统的上线除了常规的功能性测试外,还需要经过严格的性能测试,满足预期的性能指标(常见的有响应时间,tps等),才允许上生产环境。 广义的性能测试一般还包含负载测试(用于测试…

Java接口性能优化实例

Java接口性能优化实例 文章目录 Java接口性能优化实例概述用到的工具和环境工具环境 找瓶颈启示和收获 概述 最近公司的下单接口有些慢,老板担心无法支撑双11,想让我优化一把,但是前提是不允许大改,因为下单接口太复杂了&#xf…

JAVA程序性能优化

制约程序性能的根源 常用的性能评估指标 并发:同一时间多少请求访问:如同一时间10个用户请求,并发就是10TPS:transaction per second:相当于写操作QPS:query per second:相当于读请求&#xf…

Java性能优化的35个细节(珍藏版)

代码优化,一个很重要的课题。可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有什么影响呢?这个问题我是这么考虑的,就像大海里面的鲸鱼一样,它吃一条小虾米有用吗&#xff1…

Java 中 10 大简单的性能优化

Java 7 ForkJoinPool和 Java 8 的并行Stream有助于并行化东西,这在您将 Java 程序部署到多核处理器机器上时非常有用。与跨网络上的不同机器进行扩展相比,这种并行性的优势在于您几乎可以完全消除延迟效应,因为所有内核都可以访问相同的内存。…

Java性能优化的七个方向

博客主页:https://tomcat.blog.csdn.net 博主昵称:农民工老王 主要领域:Java、Linux、K8S 期待大家的关注💖点赞👍收藏⭐留言💬 目录 概述复用优化计算优化并行执行变同步为异步惰性加载 结果集优化资源冲…

JAVA性能优化实例

目录 概述 Sql性能优化 多线程 利用内存缓存 功能优化 参考博客 概述 性能优化的几个点,大致可以分为: sql优化使用多线程利用内存,缓存等,将固定不常更改的数据放入在,存取更快的内存当中功能实现逻辑优化 Sql性…

10种简单的Java性能优化学习

10种简单的Java性能优化学习 你是否正打算优化hashCode()方法?是否想要绕开正则表达式?Lukas Eder介绍了很多简单方便的性能优化小贴士以及扩展程序性能的技巧。 最近“全网域(Web Scale)”一词被炒得火热,人们也正在…

Java性能优化实践:分享Java性能优化的实践经验

Java性能优化是一个非常重要的话题,在现代软件开发中扮演着至关重要的角色。在本篇博客中,我将分享一些Java性能优化的实践经验,包括使用JavaProfiler分析程序性能、使用JMH进行基准测试、优化JVM参数等,帮助开发者更好地理解Java…

11 个简单的 Java 性能调优技巧

大多数开发人员理所当然地以为性能优化很复杂,需要大量的经验和知识。好吧,不能说这是完全错误的。优化应用程序以获得最佳性能不是一件容易的事情。但是,这并不意味着如果你不具备这些知识,就不能做任何事情。这里有11个易于遵循…

Java性能优化

文章目录 一、JVM内存模型1.1、程序计数器(Program Counter Register)1.2、JVM虚拟机栈(JVM Stacks)1.3、本地方法栈(Native Method Stacks)1.4、堆(Heap)1.5、方法区(Me…