2016-08-18 41 views
5

Şu anda tek bir sayfa kullanması gereken bir web sayfası üzerinde çalışıyorum Reaksiyon ön ucu. Arka uç için, bahar önyükleme çerçevesini kullanıyorum.SPA - API dışı istekler için index.html sunun

Tüm api çağrıları, /api ile önceden yazılmış bir url kullanmalı ve REST denetleyicileri tarafından kullanılmalıdır.

Diğer tüm URL'ler yalnızca index.html dosyasına hizmet etmelidir. Bunu baharla nasıl başarabilirim?

cevap

4

İstediğinizi gerçekleştirmenin en kolay yolu, özel 404 işleyiciyi uygulamaktır.

bu params sizin application.properties ekleyin:

spring.resources.add-mappings=false 
spring.mvc.throw-exception-if-no-handler-found=true 

İlk özellik tüm varsayılan statik kaynak kullanımını ortadan kaldırır, ikinci özellik (varsayılan Bahar tarafından NoHandlerFoundException yakalar ve standart Whitelabel sayfasını vermektedir) Spring'in varsayılan Whitelabel sayfasını devre dışı bırakır

Başvurunuz bağlamına 404 işleyicisi ekleyin:

Eğer (bu durumda index.html) statik içerik sunmaya için özel görünüm çözümleyicinizi eklemeniz gerekecektir sonunda

import org.springframework.context.annotation.Bean; 
import org.springframework.context.annotation.Configuration; 
import org.springframework.web.servlet.ViewResolver; 
import org.springframework.web.servlet.config.annotation.EnableWebMvc; 
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; 
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; 
import org.springframework.web.servlet.view.InternalResourceView; 
import org.springframework.web.servlet.view.UrlBasedViewResolver; 

@Configuration 
@EnableWebMvc 
public class WebConfig extends WebMvcConfigurerAdapter { 

    @Override 
    public void addResourceHandlers(ResourceHandlerRegistry registry) { 
     registry.addResourceHandler("/index.html").addResourceLocations("classpath:/static/index.html"); 
     super.addResourceHandlers(registry); 
    } 

    @Bean 
    public ViewResolver viewResolver() { 
     UrlBasedViewResolver viewResolver = new UrlBasedViewResolver(); 
     viewResolver.setViewClass(InternalResourceView.class); 
     return viewResolver; 
    } 

} 

Sizin index.html/resources/static/ dizinde yerleştirilmelidir.