需求:
一个联想搜索接口,然后在前端能通过搜索框的下拉选项去选择不同指标进行联想搜索,比如下拉选项有员工、网点等,当请求的是员工就返回员工数据类型,请求的是网点就返回网点数据类型,但是都是请求同一个接口;
问题:
这种情况下我的接口返回类型是不同的json结构,我该怎么办?返回值类型和接收请求的参数该怎么搞?
已经了解到可以用泛型或者object类去写,但是我尝试过,还是有问题。
需求:
一个联想搜索接口,然后在前端能通过搜索框的下拉选项去选择不同指标进行联想搜索,比如下拉选项有员工、网点等,当请求的是员工就返回员工数据类型,请求的是网点就返回网点数据类型,但是都是请求同一个接口;
问题:
这种情况下我的接口返回类型是不同的json结构,我该怎么办?返回值类型和接收请求的参数该怎么搞?
已经了解到可以用泛型或者object类去写,但是我尝试过,还是有问题。
建议实现RESTful风格
用一个统一的返回类型来包装返回的数据
比如员工数据:
{
"code":0,
"msg":"请求成功",
"data":{
"type":"0",
"stuffName":"Xy718"
}
}
网点数据:
{
"code":0,
"msg":"请求成功",
"data":{
"type":"1",
"pointName":"Xy718's_Home"
}
}
这个type
写在data
外面也可以,看你自己
后端的改变是一定的,实现RESTful对未来也有帮助,长痛不如短痛
谢谢,但是项目组老大好像说不用这样,我也不懂怎么搞,要是用RESTful风格,那个统一的返回类型该用啥?
接口定义返回类型为Object
然后返回一个Map就可以了
非常不优雅,让我放弃RESTFul是不可能的
谢谢你,但是接收参数类型用object?它有四种不同指标类型可以传过来,不方便截图,只能大致这样说,用restFul前端也不愿意这种方式
接收。。。???
接收也是会用多种不同字段名的数据吗
是的,这个接口主要用来接收前端不同的指标搜索功能,比如第一次请求客户搜索,就返回客户信息,第二次请求站点搜索,那就返回站点信息
那你就写一个包含了所有字段的Body对象:
@Data
class test{
#员工名称
string stuffName;
#网点名称
string pointName;
}
像这样,
前端带在Body或者param传来的数据如果有就会被填上,如果没有那就是null
我在VO包下写了个类用来接收请求的参数,还写了个响应返回数据的类,还有个是用来处理操作数据库后返回的结果
所以呢,问题解决了吗
我在一个controller里写了四个接口,让前端判断用户选择的是什么类型,然后再请求不同的接口,我不知道怎么写一个能解决接收不同类型请求再返回不同类型数据的接口
是哪个前端不喜欢RESTful
???
请求还是一个接口,定义一个type字段让前端传到后台用于判断需要什么数据就好
返回结构包含4个字段,不同数据结构,前端自己取就好了,还有前端不喜欢这个结构的????
{
"code": "",
"data":{
a:{ // 数据a
},
b:{// 数据b
}
}
}