java如何在rest get调用中传递参数列表(如电子商务中的filter对象)
在我的应用程序中,需要根据一些参数获取数据。 我只是想知道更好的方法是什么
一种方法是,我可以将参数列表作为路径变量传递
第二种方法是,我可以通过请求主体,我认为它是模糊的,我不确定这是否可能
您可以在下面找到代码:
@GetMapping("/cities/{cityName}/latitude/{latitude}/longitude/{longitude}/cityId/{cityId}/street/{street}")
public ResponseEntity<ResponseContainer<CityDto>> getCityByCityNameOrLatitudeAndLongitude() {
}
我只是想知道我怎样才能达到同样的目标
还有一个问题,电子商务公司有很大的筛选标准,所以他们是如何实现的
# 1 楼答案
通过在路径中传递参数,您将限制自己扩展API。例如,如果你想扩展你的API,如果你想用Street1(或)Street2作为标准进行过滤,那么你的路径将不支持它,它将迫使你更新你的API。最好在body或url参数中传递criteria对象。亚马逊印度正在通过以下标准。我选择了标准为Manufacturer=Samsung或MI、存储为8gb或4gb的手机,它们只是在查询参数中添加了条件
# 2 楼答案
首先,你展示了一种获取城市的方法。 使用路径作为
/city/{somethingUnique}
是更好的方法正如你所知,世界各地都有重复的城市名称(如巴黎、墨尔本)
我建议你只使用一种方法,而不是使用很多方法(一种方法使用id查询,另一种方法使用name查询,另一种方法使用lonlat查询,另一种方法使用countryid查询)来查询你的城市。它使你的API更加灵活。要实现这一点,可以使用两种不同的方法进行设计: