如何用 java 开发一个简单接口?

相同点

接口开发流程都是一样的, 这一点 java 和 delphi 完全一样.

都是先接收参数. 解析参数. 处理参数. 到数据库去执行. 组合出参再返给对方.

不同点

delphi 需要手动去解析参数, GetXMLNodeValue(invalue, ‘input.入参1’). 最后出参一般是 变量 + 字符串 拼接的方式组合的.

java 有2种解析方式.

可以像delphi一样可以把入参当做一个 json 对象或 xml 对象来手动解析处理. 参见 https://www.junjun.fun/22_09_19_java_handles_xml_and_json

也可以采用自定义对象的方式. 定义一个入参请求类, 让框架自动把参数解析到类里面.

有了入参请求类, 可以在类中通过注解生成文档, 所有的请求参数可以清晰完整的注释在类里.

这样更方便阅读, 方便维护, java更推荐这种方式.

解析参数和处理参数, 变成了对类进行处理, 对类的属性进行运算.

到数据执行, 全部变成类. 一个表一个类. 根据入参生成一个对象传到数据库. 数据库再返回一个对象回来.

对数据库返回的对象进行处理. 赋值到接口的响应类.

再由框架把类转换成对方需要的xml或者json即可.

例子

需求 传入药品编码, 返回药品生产厂家和购入价.

入参: {drugID:00033398}

出参: {Factory:”重庆九州通制药”,PurchasePrice:”5.23”}

0. 搭建第一步

delphi的银行项目一般是复制一份稳定的其他项目. 再修改增加execute的方法.
java的项目也一样. 直接拉一个新分支. 修改增加controller层. 新定义一个请求类, 增加一个controller方法.
如果要完全重新搭建项目. 可以参考: https://www.junjun.fun/22_11_02_how_to_build_a_new_project/

0.1 controller 层, service层, dao层, bean层

https://www.junjun.fun/22_11_16_whats_the_meaning_of_layered

1. 定义入参类

2. 接收参数并处理参数

此处不太好理解. 对方传的是一个json怎么就变成类了. 不太好解释. 加上@RequestBody注解, 框架就自动转换了.

注意drugInStockRequest.getDrugID(), 此处从类中取到了”00033398”字符串, 并传给了sevice层的queryDrugInStock方法.

3. 执行sql得到响应类 DrugInStockResponse

4. 出参

根据第三步已经得到接口响应对象. 但是需求的字段名还有一点差异. 文档定义生产厂家是 Factory ,而我们是 csccj.

此时DrugInStockResponse中需要指定一个注解. 让框架把类属性按文档生成json

一点思考

如果用delphi写的话, 在执行SQL的时候肯定是一个库存表和药品信息表做一个联合查询. 一句sql了事.

java也可以. 但是不推荐. 为什么不推荐, 我还没搞清楚.

例子的循环查药品信息表, 应该改成 in 执行一次. 但优化之后也需要执行2句sql.

sql从一句变两句是否效率会更高还需要测试.