gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 05:35:00 25 4
gpt4 key购买 nike

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

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

第二种方式是,我可以传递请求正文,我认为它很模糊,我不确定它是否可能。

您可以找到以下代码:

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

我只是想知道如何才能实现同样的目标。

还有一个问题,电子商务公司有很大的过滤标准,那么他们是如何实现的。

最佳答案

虽然没有硬性规定,但我通常会避免在 GET 请求中发送正文,因为这是一个糟糕的设计。您还应该引用这篇 SO Post,其中包含有关在 GET 请求中使用 body 的讨论。这是一篇固执己见的帖子,没有明确的"is"或“否”,但你会得到一个想法。

HTTP GET with request body

您可以使用路径参数或查询参数,具体取决于这些字段代表的内容。

关于差异或当我引用this answer时使用哪个,其中提到虽然没有硬性规则,但通常最好使用可以唯一地将资源标识为路径参数(例如 id、名称等)的参数,并且如果您的参数应该执行诸如过滤/排序之类的操作,例如2019年1月1日之后的记录,然后去查询参数。

另外,在我的一个 API(执行过滤)中,我使用通用查询参数,在查询中传递 JSON 对象。所以基本上我的 API 需要根据变量/多个属性搜索对象。例如。我的数据库中有一些具有特定电压、电流、尺寸等值的对象。因此,请求可能包含 1 个或多个的组合。因此,为了保持 API 的灵 active ,我提供了一个可以接受 JSON 对象的查询参数。

所以我提出这样的请求:

 {{SERVER}}/api/search?query={voltage:12V,size:10}

在我的 API 中,我可以将此 json 对象转换为相应的 POJO:

@GET    
@Path("/search")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public Response search(@QueryParam("query") String queryParam) throws Exception
{
Myobj obj = new Gson().fromJson(queryParam, Myobj.class);
// rest of code

关于java - 如何在rest get调用中传递参数列表(如电子商务中的过滤器对象),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56831331/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com