簡體   English   中英

在將 HTTP GET 請求傳遞給控制器​​時修改請求參數

[英]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 ,例如:

  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());
        }
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM