有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在rest get调用中传递参数列表(如电子商务中的filter对象)

在我的应用程序中,需要根据一些参数获取数据。 我只是想知道更好的方法是什么

一种方法是,我可以将参数列表作为路径变量传递

第二种方法是,我可以通过请求主体,我认为它是模糊的,我不确定这是否可能

您可以在下面找到代码:

@GetMapping("/cities/{cityName}/latitude/{latitude}/longitude/{longitude}/cityId/{cityId}/street/{street}")
      public ResponseEntity<ResponseContainer<CityDto>> getCityByCityNameOrLatitudeAndLongitude() {
}

我只是想知道我怎样才能达到同样的目标

还有一个问题,电子商务公司有很大的筛选标准,所以他们是如何实现的


共 (2) 个答案

  1. # 1 楼答案

    通过在路径中传递参数,您将限制自己扩展API。例如,如果你想扩展你的API,如果你想用Street1(或)Street2作为标准进行过滤,那么你的路径将不支持它,它将迫使你更新你的API。最好在body或url参数中传递criteria对象。亚马逊印度正在通过以下标准。我选择了标准为Manufacturer=Samsung或MI、存储为8gb或4gb的手机,它们只是在查询参数中添加了条件

    enter image description here

  2. # 2 楼答案

    首先,你展示了一种获取城市的方法。 使用路径作为/city/{somethingUnique}是更好的方法

    正如你所知,世界各地都有重复的城市名称(如巴黎、墨尔本)

    我建议你只使用一种方法,而不是使用很多方法(一种方法使用id查询,另一种方法使用name查询,另一种方法使用lonlat查询,另一种方法使用countryid查询)来查询你的城市。它使你的API更加灵活。要实现这一点,可以使用两种不同的方法进行设计:

    • 将标准发布为响应主体
    • 将标准作为查询字符串传递