gpt4 book ai didi

java - Spring RestTemplate : get with nullable paramaeter

转载 作者:行者123 更新时间:2023-12-02 07:36:41 24 4
gpt4 key购买 nike

我正在尝试提供真正的 RestFull 服务并遵守文档。然而,我现在遇到了一个问题,我看不到明确的答案。我想使用过滤器从网络服务查询一些数据。以下路径是在webservice的 Controller 上定义的

@RequestMapping(value="/rest/postalcode/list/filter?lang={lang}&postalcode={postalcode}&country={country}&city={city}", method = RequestMethod.GET, produces="application/json")
public @ResponseBody JsonPostalCodeList findFilteredPostalCodes(@PathVariable("lang") String lang, @PathVariable("postalcode") String postalcode, @PathVariable("country") Long country, @PathVariable("city") String city, Model model) throws Exception {
}

然后我尝试在客户端使用以下方法调用它

public JsonPostalCodeList findPostalCodes(
JsonPostalCodeSelectorData selectorData) {
String url = getWebserviceLocation()+"/rest/postalcode/list/filter?lang={lang}&postalcode={postalcode}&country={country}&city={city}";
MbaLog.debugLog(logger,"Calling webservice with url: " + url);
return getRestTemplate().getForObject(url, JsonPostalCodeList.class, selectorData.getContactLanguage(), selectorData.getPostalCode(), selectorData.getCountry(), selectorData.getCity());
}

现在,selectorData.getPostalCode() 可以为 null,因为用户没有填写要过滤的邮政编码。对于国家和城市也是如此(始终填写 lang)。但每次运行它时,我都会收到 IOException not find (可能是由于 null 引起的)。我尝试了一次,所有内容都已填写,并且我在服务方面完美地采用了我的方法。那么你如何处理这样的问题呢?

我可以通过将 GET 扔出窗口来解决这个问题,然后将所有内容作为与 Jackson 映射的 JSONobject 放入 POST 正文中,然后问题就解决了。但是我使用 POST 来获取数据,而在纯 REST 中应该使用 GET 来获取数据。

那么 RestTemplate 和带有可变数据的查询服务如何进行?

最佳答案

刚洗了个冷水澡,自己发现了:)

我不必使用路径变量,我只需使用请求参数即可。

@RequestMapping(value="/rest/postalcode/list/filter", method = RequestMethod.GET, produces="application/json")
public @ResponseBody JsonPostalCodeList findFilteredPostalCodes(@RequestParam("lang") String lang, @RequestParam("postalcode") String postalcode, @RequestParam("country") Long country, @RequestParam("city") String city, Model model) throws Exception {
}

并调用它

@Override
public JsonPostalCodeList findPostalCodes(
JsonPostalCodeSelectorData selectorData) {
String url = getWebserviceLocation()+"/rest/postalcode/list/filter?lang={lang}&postalcode={postalcode}&country={country}&city={city}";
MbaLog.debugLog(logger,"Calling webservice with url: " + url);
return getRestTemplate().getForObject(url, JsonPostalCodeList.class, selectorData.getContactLanguage(), selectorData.getPostalCode(), selectorData.getCountry(), selectorData.getCity());
}

关于java - Spring RestTemplate : get with nullable paramaeter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12117252/

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