Как сделать правильное регулярное выражение для String.matches () для "image / *" в Java? - PullRequest
0 голосов
/ 25 октября 2019

В приложении Spring Boot я создаю API, который принимает значение в заголовке запроса типа application / pdf или image /*.

@GetMapping(path = "/test, produces = { MediaType.APPLICATION_OCTET_STREAM_VALUE,
        MediaType.APPLICATION_PDF_VALUE, MediaType.IMAGE_PNG_VALUE, MediaType.APPLICATION_JSON_VALUE })
public ResponseEntity<?> getSomething( @RequestHeader(name = "Accept") @NotEmpty List<String> 
        acceptTypes)

Я хочу проверить, содержит ли оно какое-либо из изображений / *например, image / png и т. д.

boolean acceptHeaderValid = false;
for (String acceptType : acceptTypes) {
    if (acceptType.matches("image/*") || acceptType.matches(MediaType.APPLICATION_PDF_VALUE)) {
          acceptHeaderValid = true;
          break;
    }
}

Но когда я отправляю image / * в заголовке Accept в Insomnia, acceptType.matches ("image / *") оценивается как ложное. В чем ошибка в регулярном выражении? Есть ли более эффективный способ сделать это?

1 Ответ

0 голосов
/ 25 октября 2019

Это может быть не очень сложно, но простым подходом было бы просто использовать String.startsWith Буквально:

acceptType.startsWith("image/")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...