gpt4 book ai didi

java - Spring:使用 BadRequest 处理不明确的映射

转载 作者:行者123 更新时间:2023-12-02 10:34:43 26 4
gpt4 key购买 nike

我正在开发一个 Spring 应用程序,目前我正在对我们的客户注册表实现搜索。

我们用户请求的一个关键点是最多可以对以下参数中的一个进行搜索:名称OR id(可以是部分)< strong>OR 店铺id(顾客注册的店铺)不允许组合使用更多参数(如果您愿意,可以使用“更多过滤器”)进行搜索。

在这里我遇到了问题:我开发了一个 RestController,它有 1 个端点,由 3 个不同的函数处理,如下所示:

@RestController()
@RequestMapping("v1/customers")
public class ExampleController {

/**
* Search for customer's name (can be partial)
* @param name
* @return
*/
@GetMapping(value="search", params="name")
public String searchByName(String name) {
return "search for name";
}


/**
* Search for the customer by id (can be partial)
* @param name
* @return
*/
@GetMapping(value="search", params="id")
public String searchById(String id) {
return "search for id";
}

/**
* search for the customer from the shop id where he is registered
* @param name
* @return
*/
@GetMapping(value="search", params="shopId")
public String searchByShopID(String shopId) {
return "search for shop";
}

}

除了一个问题之外,一切正常:

问题是,如果应用程序收到具有多个查询参数的请求,如下所示:

http://localhost:8080/v1/customers/search?name=bob&shopId=897a

Spring 抛出“Ambigously Mapping”异常并返回 HTTP 500 状态代码

我该如何处理?是否可以处理返回 HTTP 400(和自定义消息)的情况?也许有“默认映射”之类的东西。

最佳答案

您可以使用https://docs.spring.io/spring/docs/5.0.8.RELEASE/javadoc-api/org/springframework/web/bind/annotation/RequestMapping.html#params--参数以按 HTTP 参数进行过滤。在你的情况下,它会是这样的:

 @GetMapping(value="search",params = "name")
public String searchByName(@RequestParam("name") String name) {
return "search for name";
}

@GetMapping(value="search",params = "shopId")
public String searchByShopID(@RequestParam("shopId") String shopId) {
return "search for shop";
}

关于java - Spring:使用 BadRequest 处理不明确的映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53377958/

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