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

article/2025/11/9 8:21:06

  • 关于平湖人社APP后台开发总结
  • APP后台接口开发我总结出以下几个部分:
    • 需求分析与整理
    • 分析业务需求涉及的模块功能与数据库关联表
    • 接口开发文档大致编写并提交产品与APP开发人员
      • 1.主要是webservise 地址:http://XXXX/services/SbcxWebservice?wsdl
      • 2.接口函数统一为 sbp_sbcx_XXXX
      • 3.传入参数: 传入参数全为Stirng类型,格式为json字符串,基本格式为(传出类似不列出):
      • 4.数据字典 :对部分字段进行补充示意
    • 存储过程接口测试
    • 接口开发文档完善细致编写并提交产品与APP开发人员
    • APP端完成模块功能后联合测试调整
    • 完成各项测试后上线正式版本
    • 待提升的地方还有很多:
      • 判断逻辑有待优化
      • 查询语句有待优化
      • http请求连接方面有待加深
      • plsql语法有待学习
      • 与客户,项目成员交流有待提升(毕竟沟通的好会让开发事半功倍!切身体会啊)

关于平湖人社APP后台开发总结

这是我第一次做联合开发,对于多部门多人员合作开发项目我这个才毕业没多久的新人菜鸟还是有很多挑战与困难的,不过只有在实际项目开发中才能学到东西.话不多说,我们直奔主题.(忽略我使用英文标点符号,开发不易啊…)

APP后台接口开发我总结出以下几个部分:

  • 需求分析与整理
  • 分析业务需求涉及的模块功能与数据库关联表
  • 接口开发文档大致编写并提交产品与APP开发人员
  • 存储过程接口编写
  • 存储过程接口测试
  • APP端完成模块功能后联合测试调整
  • 完成各项测试后上线正式版本

需求分析与整理

需求分析主要是我在现场与客户协商探讨分析大体上需要完成的功能和APP原型,然后整理后前期需求给产品经理,后产品过来与客户再进行商讨具体功能之类事宜.我主要是了解大体上要做的东西和业务系统之间的区别关联,方便日后去参考业务系统判断编写规则.这期间我就要准备相关的接口编写事宜了,大体的接口编写我其实是不了解的,之前都没接触过,之后一点一点的询问项目经理,好在项目经理跟我说之前其他项目组曾今做个接口开发的模板我可以去借鉴下.这就我开始接口开发的准备了.

分析业务需求涉及的模块功能与数据库关联表

在产品经理整理好需求文档和APP原型图发于我后开始分析自己要完成的任务有哪些 需求文档截图
这里我就取APP中最主要的功能模块–人员续保做实例.
这个功能主要是用于人员续保操作,其中涉及的数据表结构多,判断规则多,完成难度大.当然也是我花费时间最多的功能了. 主要很多续保的规则我通过业务系统代码来看也是不够的,好在客户理解续保的麻烦跟我很细致的解说并在后续开发测试中不予余力的提供帮助,非常感谢他们.在完成续保需求分析后,我先不急着编写接口,主要是现在写也写不好,必须要先进行接口功能UML建模(其实是之前的接口编写吃过亏,没有细致分析判断规则导致代码十分臃肿,不易于阅读理解…)所以建模很重要!!!有助于理解复杂关系判断.

部分判断流程图:

Created with Raphaël 2.1.2 开始续保 校验人员单位信息/基数范围/险种类型... 是否符合判断规则? 校验参保单位参保情况/工伤生育可多单位参保 是否符合判断规则? 校验灵活人员单工伤/特殊企业不可参保 是否符合判断规则? 插入数据库 数据是否插入成功? 续保成功 yes no yes no yes no yes no

接口开发文档大致编写并提交产品与APP开发人员

接口开发文档以前也是没有写过的,难以下笔啊.一样是询问项目经理完成的…

1.主要是webservise 地址:http://XXXX/services/SbcxWebservice?wsdl

2.接口函数统一为 sbp_sbcx_XXXX

3.传入参数: 传入参数全为Stirng类型,格式为json字符串,基本格式为(传出类似不列出):

字段名称类型可否为空字段说明
jhjdstring交换节点
sbbhstring社保编码
certnostring身份证号
jylxstring交易类型

json格式内容:{“jhjd”:”330482”,”sbbh”:”000001”,” certno “:”330425199009098787”,”jylx”:”1”}

4.数据字典 :对部分字段进行补充示意

代码块语法遵循标准plsql代码,贴出部分代码吧(也就是存储过程编写):

--1007人员续保申报Procedure sbp_sbcx_1007(as_inmsg in long, as_outmsg out clob) isal_inmsg      long;j_JsonmainIn  Json.Jsonstructobj; --主信息JSONRet_ErrCode   varchar2(10); --错误代码Ret_Errmsg    varchar2(32670); --提示信息j_JsonmainOut Json.Jsonstructobj; --主信息JSONj_Json        Json.Jsonstructobj; --主信息JSONt_Array       Sbp_Public.t_Varchar2;iv_dwbm       varchar2(30);iv_sbbh       varchar2(30);iv_sfzh       varchar2(30);iv_xm         varchar2(30);iv_xb         varchar2(4);iv_csrq  varchar2(30); --出生日期        iv_hkxz  varchar2(30); --户口性质        iv_lxdh  varchar2(30); --联系电话        iv_lxdz  varchar2(50);-- 联系地址        iv_ygxz  varchar2(30); --用工性质        iv_jfjs  varchar2(30);--缴费基数         iv_xbyy  varchar2(30); --续保原因   BeginRet_ErrCode := 'B00';Ret_Errmsg  := null;--判断传入参数app_sjjc.P_Dissemble('1007','1',as_inmsg,Ret_ErrCode,Ret_Errmsg);if Ret_ErrCode = 'ERROR' thensbp_err(Ret_ErrCode, Ret_Errmsg, as_outmsg);Return;end if;---解包al_inmsg := as_inmsg;---转换成jsonj_JsonmainIn := Json.String2json(al_inmsg, '"'); --转换成JSONiv_dwbm := Json.Getattrvalue(j_JsonmainIn, 'dwbm'); --取得单位编码;iv_sbbh := Json.Getattrvalue(j_JsonmainIn, 'sbbh'); --取得身份证号iv_sfzh := Json.Getattrvalue(j_JsonmainIn, 'zjhm'); --取得身份证号iv_xm   := Json.Getattrvalue(j_JsonmainIn, 'xm'); --取得姓名iv_csrq := Json.Getattrvalue(j_JsonmainIn, 'csrq');iv_hkxz := Json.Getattrvalue(j_JsonmainIn, 'hkxz');iv_lxdh := Json.Getattrvalue(j_JsonmainIn, 'lxdh');iv_lxdz := Json.Getattrvalue(j_JsonmainIn, 'lxdz');iv_ygxz := Json.Getattrvalue(j_JsonmainIn, 'ygxz');iv_jfjs := Json.Getattrvalue(j_JsonmainIn, 'jfjs');......begin  select * into rec_ac01 from ac01 where aae135 = iv_sfzh;select aaz001 into v_aaz001 from ab01 where aab001 = iv_dwbm;exceptionwhen others then Ret_ErrCode := 'ERROR';Ret_Errmsg  := '未找到人员信息或单位信息';sbp_err(Ret_ErrCode, Ret_Errmsg, as_outmsg);Return;end;  select aab019 into v_aab019 from ab01 where aab001 = iv_dwbm;if v_aab019 = '99' thenRet_ErrCode := 'ERROR';Ret_Errmsg  := '行业统筹类型单位不允许手机参保,请去社保中心办理';sbp_err(Ret_ErrCode, Ret_Errmsg, as_outmsg);Return;end if;......-- ac02 无信息--插入ac21select sq_aaz308.nextval into rec_ac21.aaz308 from dual;rec_ac21.aaa027 := rec_ac01.aab301;rec_ac21.aac001 := nvl(i_aac001,rec_ac01.aac001); rec_ac21.aae140 := v_cbxz; rec_ac21.aae030 := n_aae002;rec_ac21.aic001 := 0; rec_ac21.eac070 := '0';rec_ac21.aac033 := to_char(sysdate,'yyyyMMdd');rec_ac21.aae206 := null;rec_ac21.aae011 := 'app';rec_ac21.aae036 := sysdate;select sb_prseno.nextval into rec_ac21.prseno from dual;select sq_aaz159.nextval into rec_ac21.aaz159 from dual;rec_ac21.aac050 := '01';rec_ac21.eaz132 := '1';rec_ac21.aac008 := '1';insert into ac21 values rec_ac21;......commit;Json.Newjsonobj(j_JsonmainOut, TRUE);j_JsonmainOut := Json.Addattr(j_JsonmainOut, 'recode', Ret_ErrCode); --交易结果j_JsonmainOut := Json.Addattr(j_JsonmainOut, 'remessage', Ret_Errmsg); --交易结果信息Json.Closejsonobj(j_JsonmainOut);--json转化成数据as_outmsg := Json.Json2string(j_JsonmainOut);Return;ExceptionWhen Others ThenRet_ErrCode := 'ERROR';Ret_Errmsg  := '交易异常出错:' || sqlerrm;sbp_err(Ret_ErrCode, Ret_Errmsg, as_outmsg);Return;End;

接口开发中主要的是对一些判断逻辑进行编写,当一切判断规则都符合后才进行表增删改查操作.

存储过程接口测试

写完接口肯定是先要自己这边测试下的啊,功能判断是否正确,这时候就瞎**输入可能的错误正确情况了… 存储过程的调试就一个一个试咯.
调试入口截图
这里吐槽下续保的判断真是多啊,多到我都佩服制定这规则的人怎么想到这么细致的呢,什么脑子脑子脑…

接口开发文档完善细致编写并提交产品与APP开发人员

接口开发好了就要修改完善之前写的接口文档了,那个先前版本的文档是让APP端先进行大体开发写的(同步开发!),具体的参数现在要调整之类的.这期间也是有烦人事的,不过都是比对前后变化的问题. 然后就是发给产品和APP开发了,我这边稍稍喘口气,等APP端完成模型和功能再联调吧!

APP端完成模块功能后联合测试调整

上传个判断截图

联调是个尽出幺蛾子的过程,什么奇葩不可能不理解的错误都跳出来嘚瑟了.APP前端改,APP服务端改,我这边后台改,改,改…产品的消息不停啊.也是这个时候才能大规模发现问题不足.不过测试的妹子qq倒是加了不少=-=

完成各项测试后上线正式版本

测试问题收录

等各项测试完成且确认没有问题后,将测试库的接口程序移植到正式库,APP端也将程序部署到正式版本供用户使用,一个完整的APP开发即结束了.

最后感觉一个APP的开发流程跟我之前想象中还是有很多区别的.比如大部分几乎所有的判断逻辑都是我在接口里写的,还以想java一样呢,不过确实写在存储过程里感觉更快一点呢…不知道对数据库性能有什么影响(待研究!)

待提升的地方还有很多:

判断逻辑有待优化

查询语句有待优化

http请求连接方面有待加深

plsql语法有待学习

与客户,项目成员交流有待提升(毕竟沟通的好会让开发事半功倍!切身体会啊)


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

相关文章

做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…

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

在JAVA程序中,性能问题的大部分原因并不在于JAVA语言,而是程序本身。养成良好的编码习惯非常重要,能够显著地提升程序性能。 1. 尽量在合适的场合使用单例 使用单例可以减轻加载的负担,缩短加载的时间,提高加载的效率,但并不是所有地方都适用于单例,简单来说,单例主要…

GNU-ARM程序开发(一)----GNU开发环境和工具

什么是GNU GNU计划,又称革奴计划。是由Richard Stallman在1983年9月27日公开发起的。目标是创建一套完全免费、自由的操作系统,基本原则是源代码共享及思想共享。 所有在GNU计划下开发的软件均为GNU软件。 为保证GNU软件可以自由地“使用、复制、修改和发…

【ARM编程】ARM介绍

01.ARM目录 ARM目录 01.ARM目录02.前言03.计算机体系结构分类04.ARM公司05.ARM应用领域06.ARM基本架构07.ARM各体系架构版本7.1 ARM版本Ⅰ:V1版架构7.2 ARM版本 Ⅱ:V2版架构7.3 ARM版本 Ⅲ:V3版架构7.4 ARM版本 Ⅳ: V4版架构7.5 A…

ARM开发环境

目录 前言一、Ubuntu及linux系统基础知识1.shell命令的运用2.Tool的安装:3.deb是软件包,dpkg是手动安装工具,apt是自动安装工具,4.Linux文件系统5.gcc编译器 二、开发环境搭建1.vim编辑器2.与windows文件互传3.VSCode使用4.NFS网络…

ARM开发环境下载地址大全

MDK5.3.8a(Keil5)最新下载地址 超链接如下,点击直达: Keil MDK (Keil Licensing) (MDK000) (arm.com) 实际网址如下所示: https://developer.arm.com/downloads/view/MDK000 Arm Compiler for Embedded下载地址 超链接如下,点击直…