Что происходит
При развертывании приложения и копировании ресурсов в папке src/main/ressources
вы ожидаете, что Spring представит приложение для вас. Но Spring - это сервер, и как сервер он обслуживает вас с учетом заданной вами конфигурации.
Используя server.servlet.context-path=/api
, вы говорите Spring: все будет иметь префикс "/ api" ... Поэтому , если вы попытаетесь запросить: http://localhost:8080/
, Spring скажет вам, что ничего не знает о таком URL, потому что для него все должно иметь префикс /api
...
Естественно, вы бы скажем: тогда давайте перейдем к http://localhost:8080/api
. Но это не так просто ... Я пока не знаю точно, что происходит, но я думаю, у вас есть индексный файл. html внутри вашего src/main/resources
или src/main/resources/public
... и когда вы пытаетесь получить доступ http://localhost:8080/api
попытается найти индекс файла. html внутри src/main/resources/{public}/api/index.html
... И не найдет. Отсюда и исключение.
Временное решение
Я столкнулся с аналогичной проблемой с VueJS и Spring Boot. Не теряя слишком много времени, я решил удалить свойства server.servlet.context-path=/api
и вручную поставить префикс для моего контроллера с аннотацией @RequestMapping
.
@RestController
@RequestMapping("/api")
public class MyController {
...
}
Это должно сработать, но я не большой поклонник .