首页 新闻 搜索 专区 学院

需要在后端写代码调用一个接口,这个接口需要很多参数,有哪些注意事项

0
悬赏园豆:20 [已解决问题] 解决于 2020-10-26 20:37

需要在后端写代码调用一个接口,这个接口需要很多参数,我能把这些参数封装成实体类区传递过去吗?
比如我时使用restTemplate调用接口,需要传递的参数有6个(userId, count,pagesize,age,name,max),get请求的,而且返回参数也挺多如何操作呢??。请写具体的代码作为答复,谢谢

我的思路是:
1.直接把那6个请求参数封装成一个实体类UserDto,再把返回参数也封装如ResutVo
2.restTemplate.getForObject(url, UserDto,Result.class);
或者把参数从UserDto里面拿出来,放进map集合中,
restTemplate.getForObject(url, map,Result.class);

lanto_liang的主页 lanto_liang | 初学一级 | 园豆:105
提问于:2020-10-14 12:13
< >
分享
最佳答案
0

接口定义的时候,如果你的接口需要通过get来请求,那么在入参定义的时候,直接用一个json字符串来接收比较好,传递的时候参数序列化一个json字符串,接口在收到参数后,在反序列化一次我数据模型;
入参为一个实体模型的参数,更建议你用post来请求,下面给一个简单实例说明:
/// <summary>
/// 新增一条航班记录
/// </summary>
/// <param name="model">航班数据模型</param>
/// <returns>影响的行数</returns>
[Route("AddOneFlight")]
[HttpPost]
public MReturnResultBase AddOneFlight(MtbflightForAdd model)
{
this.InitData();

        if (string.IsNullOrEmpty(model.belong_airport_three))
        {
            model.belong_airport_three = base.GetAirportThreeCode();
        }

        return flightServiceOpert.AddOneFlight(model);
    }

    /// <summary>
    /// 新增一条航班记录
    /// </summary>
    /// <param name="modelStr">航班数据模型json字符串</param>
    /// <returns>影响的行数</returns>
    [Route("AddOneFlightGet")]
    [HttpGet]
    public MReturnResultBase AddOneFlight(string modelStr)
    {
        this.InitData();
       MtbflightForAdd model= JsonConvert.DeserializeObject<MtbflightForAdd >(modelStr);
        if (string.IsNullOrEmpty(model.belong_airport_three))
        {
            model.belong_airport_three = base.GetAirportThreeCode();
        }

        return flightServiceOpert.AddOneFlight(model);
    }
收获园豆:10
程序员修炼之旅 | 小虾三级 |园豆:737 | 2020-10-14 16:22
其他回答(9)
0

你的思路是对的,按照你那么弄是最好的方法了

悟行 | 园豆:12371 (专家六级) | 2020-10-14 13:42
0

可以 就按你的思路来就行

竜咚咚 | 园豆:775 (小虾三级) | 2020-10-14 14:06
0

你的思路是比较专业而且可行的,学到了

编程小白-郭旭 | 园豆:484 (菜鸟二级) | 2020-10-14 15:41
0

你的想法没什么问题

通信的搞程序 | 园豆:1528 (小虾三级) | 2020-10-14 17:25
0

可以通过json格式传递参数,然后将各个参数定义到一个字典中,同理,返回参数也可以定义到一个字典中。

收获园豆:10
周周和奇奇 | 园豆:189 (初学一级) | 2020-10-14 17:47

什么是字典??

支持(0) 反对(0) lanto_liang | 园豆:105 (初学一级) | 2020-10-14 20:23

希望可以举个,例子

支持(0) 反对(0) lanto_liang | 园豆:105 (初学一级) | 2020-10-14 20:24

@lanto_liang: 通过在做项目的时候,将一些常用的字段信息放在数据库的某张表里面,那么这个表就是字典表
比如:全国的省市明细
比如:电商里面销售商品的分类类型

支持(0) 反对(0) Mr_伍先生 | 园豆:6 (初学一级) | 2020-10-15 17:38
0

最好用json传递数据结构,参数多的放字典。

kawerd | 园豆:240 (菜鸟二级) | 2020-10-14 18:25

什么是字典

支持(0) 反对(0) lanto_liang | 园豆:105 (初学一级) | 2020-10-14 20:23

希望可以举个例子

支持(0) 反对(0) lanto_liang | 园豆:105 (初学一级) | 2020-10-14 20:24

那我接受用json,返回也能用json吗?
比如:
JSONObect jo = new JSONObject();
jo.put("username", "lisa");
HttpEntity entity = new HttpEntity(jo, new HttpHeaders());
restTemplate.exchange(url, HttpMethod. GET, entity, JSONObject);

这样有错误吗?

支持(0) 反对(0) lanto_liang | 园豆:105 (初学一级) | 2020-10-15 19:57
0

用 json传参,可以传很多很多的数据

jqw2009 | 园豆:2204 (老鸟四级) | 2020-10-15 10:41

那我接受用json,返回也能用json吗?
比如:
JSONObect jo = new JSONObject();
jo.put("username", "lisa");
HttpEntity entity = new HttpEntity(jo, new HttpHeaders());
restTemplate.exchange(url, HttpMethod. GET, entity, JSONObject);

这样有错误吗?

支持(0) 反对(0) lanto_liang | 园豆:105 (初学一级) | 2020-10-15 19:55
0

有兴趣的话,可以了解一下GraphQL

寻觅beyond | 园豆:808 (小虾三级) | 2020-10-16 17:36
0

0.0谢谢大家

lanto_liang | 园豆:105 (初学一级) | 2020-10-26 20:35
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册