2017-05-03 34 views
6

Chcę użyć React na kliencie i Java Spring Boot na serwerze dla REST API, zarówno klient, jak i serwer są spakowane razem, więc są hostowane na tym samym serwerze aplikacji.Jak używać przeglądarki React's BrowserRouter na kliencie i Java REST API (Spring Boot) na serwerze?

Mogę już przetestować interfejsy API serwera za pośrednictwem ścieżki /api.

Ale (jak) mogę używać BrowserRouter z react-router-dom (Router v4) na kliencie zamiast z HashRouter?

Nie znam Spring Boot dobrze, ale myślę, że mógłbym sprawdzić na serwerze, jeśli trasa nie pasuje do /api, wtedy zwrócę index.html z całą logiką reagowania obsługującą trasę w oparciu o ścieżkę lokalizacji zapytania HTTP ?

Mam nadzieję, że jestem jasny, nie chcę, aby hash w adresie URL i routing były wykonywane na kliencie.

Odpowiedz

0

W końcu dowiedziałem się, jak złapać wszystkie żądania GET i zwrócić moją aplikację React, było to śmiertelnie proste, po prostu użyj dzikiej karty *, zauważ, że /* nie będzie działać.

@GetMapping("*") 
public ModelAndView defaultPage(Map<String, Object> model) { 
    model.put("contextPath", contextPath); 
    return new ModelAndView("index", model); 
} 

W tym przykładzie punkty bazowe do tego pliku /src/main/resources/static/index.html

1

dość stary, ale w ogóle wszystko, czego potrzebujemy, aby dopasować api, a potem mają wieloznaczny pasujące do wszystkiego innego i powrót indeksu ...

ten sposób każdy głębokie powiązanie nadal działa, służąc root twojej aplikacji, w której router reaguje na URL, który przeglądarka posiada.

Sprężyna powinna obsługiwać coś tak prostego, jak @RequestMapping(value = "/") jako routing wszystkiego do indeksu. Spodziewałbym się, gdybyś określił/api/byłby bardziej konkretny i miałby pierwszeństwo.

+0

dzięki, to jest to, co starałem się zrobić, ale nie znaleziono jak kod transferowy teraz (sprawdź zaakceptowane odpowiedź). –

Powiązane problemy