WebApi中间件框架注意事项
电脑版发表于:2020/5/26 17:06
在写调用WebApi接口的中间件框架时,有些类型错误,需要记录一下。
像这种code返回成功!出参却没有数据,错误原因有几种情况!
1,我们的出参需要映射系统WebApi的出参字段,要保证映射的字段名称不出错,如图:
2,字段的类型也要和映射的字段类型保持一致。
3,需要自己调试,看看请求的表的参数是否有符合入参条件的数据,值是否有。(可先查询数据库)
4,实在不行的话,可能就是遇到出参类型不一致的情况,如下图:
像这种情况,出参的数据类型有ArrayList,对象,那我们映射的时候情况如下:
我们的入参数据经过Json序列化+加密打包,异步 调用请求url, 返回结果
出参的时候反序列化+解密得到数据。
var model = JsonConvert.DeserializeObject<ResponseModel>(await response.Content.ReadAsStringAsync(), JsonSettings.Current); //检查响应代码 model.CheckResponseCode(); var payJToken= JsonConvert.DeserializeObject<JToken>(model.Data.DesToString(_options.Key, _options.Iv)); var outFeeInfoRtn = _mapper.Map<List<OutFeeInfo>>(payJToken["OutFeeInfos"]); var arrayRtn = _mapper.Map<ArrayList>(payJToken["Array"]); var prepaySettlementRtn = new PrepaySettlementViewModel(); prepaySettlementRtn.Array = arrayRtn; prepaySettlementRtn.FeeInfo = outFeeInfoRtn; return new BaseViewModel { Code = model.Code, Message = model.Message, Data = prepaySettlementRtn };
我们就只能单个映射ArrayList类型和实体类型,最后实例ViewModel,完美得到出参数据!
做出来之后感觉很棒,虽然过程繁琐了些。。。
下面介绍这种错误!
这是测试某个接口时候,入参调用数据,返回的错误信息!
百度的讲解:
仔细检查了之后,发现原因:由于自己测试接口用的oracle数据库是本地的,没有更新,然而系统的库存在被被人修改,添加参数的情况,
自己的本地库却没有进行更新操作,所以这种是自己库的某张表缺少字段,而你要进行增删改操作时就无法写入数据。
解决方法:找到具体的方法,查询具体的实习方法,看sql语句操作的那些表,需要添加字段。
-- Add/modify columns alter table F_OP_FEEDETAIL add AUDIT_IDvarchar2(10); -- Add comments to the columns comment on column F_OP_FEEDETAIL.AUDIT_ID is '审阅人ID';
添加好字段之后在调试接口就行了,可能有些不单是一张表有错哦,所以需要耐心调试呢!