[英]Modifying the request parameters in HTTP GET request while passing it to controller
我需要修改GET URL“http://localhost:8081/qeats/v1/restaurants?latitude=87.97864&longitude=20.82345”中的請求參數,同時將其發送到spring boot控制器,以便緯度和經度值只是精確的到一位小數。 例如“http://localhost:8081/qeats/v1/restaurants?latitude=87.9&longitude=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);
}
您可以添加自定義Formatter 或 Converter ,例如:
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();
}
}
Formatter
: @Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {
@Override
public void addFormatters(FormatterRegistry registry) {
registry.addFormatter(new MyDoubleFormatter());
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.