Как разделить запросы к API сервера и к его статическим ресурсам?

Доброго дня всем! Столкнулся с проблемой разделения запросов на API сервера и статические ресурсы, а конкретно: index.html. Т.е задача такова: все запросы, к примеру, на: localhost:8080/administrationPanel/tables/highCategory Должны вернуть index.html. Но если я обращаюсь к API сервера, то это должно выглядеть так:localhost:8080/api/getHighCategory. Я не устанавливал никаких ViewResolver-ов, потому что отдаю статические ресурсы(хотя, может, тут я и ошибаюсь), в этом же мне помогает ResourceHandlerRegistry:
public void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry.addResourceHandler("/**").addResourceLocations("/");
}


Но, если я делаю что-то вроде этого:

@RequestMapping(value = "/**", method = RequestMethod.GET)
public String welcome() {       
    return "index.html";
}


То я не смогу обратиться к своему API, т.к все запросы будут перехватываться. Но если разделение будет такое:

@RequestMapping(value = "/administrationPanel", method = RequestMethod.GET)
public String welcome() {       
    return "index.html";
}


@RequestMapping(value = "/administrationPanel/**", method = RequestMethod.GET)
public String testWelcome() {

    return "index.html";
}

@RequestMapping(value = "/api/highCategory", method = RequestMethod.GET)
public String apiCategory() {
//code        
    return smth;
}


То при переходе на /administrationPanel все будет нормально, но если я сделаю запрос на /administrationPanel/smth, то вернется ошибка HTTP Status 500 - Circular view path.
Если же вместо @RequestMapping(value = "/administrationPanel/**"
Я сделаю:
@RequestMapping(value = "/administrationPanel/smth"

То вернется:HTTP Status 404 - The requested resource is not available.

Хотя, на это может влиять и диспетчер сервлетов:
@Override
    protected String[] getServletMappings() {
        return new String[]{"/"};
    }


Но я и не знаю как с ним пошаманить.

Как все-таки грамотно разделить запросы?
  • Вопрос задан
  • 583 просмотра
Решения вопроса 1
@Braidner
Делал так.
Возвращаю статику:
@RequestMapping(path = {"film/*", "serial/*"}, method = RequestMethod.GET)
    public String index() {
        return "forward:/index.html";
    }

Обращаюсь к rest:
@RestController
@RequestMapping("/rest/content")
public class ContentController {

    @RequestMapping(method = RequestMethod.GET)
    public HttpStatus searchContent(@Param("name") String name) {
        System.out.println("search for content with param: " + name);
        return HttpStatus.ACCEPTED;
    }

    @RequestMapping(method = RequestMethod.POST)
    public HttpStatus uploadContent(@RequestBody Content content) {
        System.out.println("upload content");
        return upload != null ? HttpStatus.CREATED : HttpStatus.BAD_REQUEST;
    }
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@goshan_p
Подозреваю вам нужен прокси-сервер со статикой. Например nginx
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Bell Integrator Ульяновск
До 400 000 ₽
Bell Integrator Хабаровск
До 400 000 ₽
Bell Integrator Ижевск
До 400 000 ₽
20 апр. 2024, в 18:09
70000 руб./за проект
20 апр. 2024, в 18:04
3000 руб./за проект
20 апр. 2024, в 17:55
3000 руб./за проект