修改HTTP GET请求中的请求参数,同时将其传递给控制器



我需要修改GET URL中的请求参数"http://localhost:8081/qeats/v1/restaurants?latitude=87.97864&经度=20.82345";同时将其发送到spring引导控制器,使得纬度和经度值仅精确到小数点后一位。例如";http://localhost:8081/qeats/v1/restaurants?latitude=87.9&经度=20.8〃;

@GetMapping(RESTAURANTS_API)
public ResponseEntity<GetRestaurantsResponse> getRestaurants(
@RequestParam Double latitude,
@RequestParam Double longitude, GetRestaurantsRequest getRestaurantsRequest) {


log.info("getRestaurants called with {}", getRestaurantsRequest);
GetRestaurantsResponse getRestaurantsResponse;
if (getRestaurantsRequest.getLatitude() != null && getRestaurantsRequest.getLongitude() != null
&& getRestaurantsRequest.getLatitude() >= -90 
&& getRestaurantsRequest.getLatitude() <= 90
&& getRestaurantsRequest.getLongitude() >= -180 
&& getRestaurantsRequest.getLongitude() <= 180) {
getRestaurantsResponse = restaurantService.findAllRestaurantsCloseBy(
getRestaurantsRequest, LocalTime.now());
log.info("getRestaurants returned {}", getRestaurantsResponse);
return ResponseEntity.ok().body(getRestaurantsResponse);
} else {
return ResponseEntity.badRequest().body(null);
}

您可以添加自定义格式化程序或转换器,例如:

  1. 实现自定义Formatter
public class MyDoubleFormatter implements Formatter<Double> {
private final DecimalFormat decimalFormat = new DecimalFormat("#.#");
@Override
public Double parse(String text, Locale locale) {
return Double.parseDouble(decimalFormat.format(Double.parseDouble(text)));
}
@Override
public String print(Double value, Locale locale) {
return value.toString();
}
}
  1. 注册自定义Formatter
@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {
@Override
public void addFormatters(FormatterRegistry registry) {
registry.addFormatter(new MyDoubleFormatter());
}
}

最新更新