2016-07-27 17 views
5

के साथ यूआरएल हैंडलिंग के साथ समस्याएं मैं मैवेन का उपयोग करके, फ्रंट एंड के लिए एंगुलर 2 के लिए स्प्रिंग बूट के साथ एक एप्लीकेशन विकसित करने की कोशिश कर रहा हूं।स्प्रिंग बूट और कोणीय 2

कोणीय 2 फ्रंट एंड परियोजना के src/main/resources/static डीआईआर में है।

जब मैं अपने ब्राउज़र में http://localhost:8080/ यूआरएल दर्ज करता हूं, तो सब ठीक है: मैं कोणीय 2 फ्रंट एंड तक पहुंच सकता हूं, और फ्रंट एंड पूरी तरह से एपीआई के साथ संवाद कर सकता है। मेरा कोणीय 2 रूटिंग ठीक काम करता है: जब मैं फ्रंट एंड पर एक लिंक पर क्लिक करता हूं, तो मैं सही पेज पर जाता हूं और ब्राउजर यूआरएल बार सही चीजें दिखाता है (यानी http://localhost:8080/documents)

लेकिन समस्या तब होती है जब मैं सीधे कोशिश करता हूं ब्राउज़र में एक ही यूआरएल लिखें। वसंत आगे के अंत में लेते हैं और कहते हैं कि /documents के लिए कोई मैपिंग नहीं है।

क्या वसंत बूट को केवल /api/* यूआरएल में "सुनने" के लिए और अन्य सभी को सामने वाले छोर पर "रीडायरेक्ट" करने का कोई तरीका है? ,

import { provideRouter, RouterConfig } from '@angular/router'; 
import { DocumentComponent } from './doc.component'; 

const routes: RouterConfig = [ 
    { 
     path: '', 
     redirectTo: 'documents', 
     pathMatch: 'full' 
    }, 
    { 
     path: "documents", 
     component: DocumentComponent 
    } 
]; 

export const appRouterProviders = [ 
    provideRouter(routes) 
]; 
+0

केवल सुनने/एपीआई/* सुनने का एक तरीका है। इसके लिए आपको एक फ़िल्टर होना चाहिए। – sparrow

+0

मैं यह कैसे कर सकता हूं? मैं इस सामान के लिए बहुत नया हूं ... – Eric

उत्तर

3

ठीक है:

@SpringBootApplication 
public class Application { 

    public static void main(String[] args) { 
     SpringApplication.run(Application.class, args); 
    } 

} 

यहाँ मेरी app.route.ts है:

@RestController 
@RequestMapping("/api") 
public class MyRestController { 

    @Autowired 
    private DocumentsRepository documentRepository; 

    @CrossOrigin(origins = "*") 
    @RequestMapping(value = "/documents/list", 
      method = RequestMethod.GET, 
      produces = "application/json") 
    public Iterable<RfDoc> findAllDocuments() { 
     return documentRepository.findAll(); 
    } 

} 

यहां मुख्य आवेदन वर्ग है:

यहाँ मेरी स्प्रिंग नियंत्रक वर्ग है तो मुझे एक बिल्कुल सही समाधान मिला (मेरे लिए, कम से कम): मैं यूआरएल में # के साथ पुराने AngularJS 1.X तरीके के लिए अपना स्थान बदलता हूं (अर्थात। http://localhost:8080/#/documents)।

इस व्यवहार प्राप्त करने के लिए, मैं इस

import { bootstrap }  from '@angular/platform-browser-dynamic'; 
import { HTTP_PROVIDERS } from '@angular/http'; 

import { AppComponent }   from './app.component'; 
import { appRouterProviders } from './app.routes'; 
import { AuthService }   from './auth.service'; 

bootstrap(AppComponent, [AuthService, 
    appRouterProviders, 
    HTTP_PROVIDERS, 
    { provide: LocationStrategy, useClass: HashLocationStrategy } 
]); 

आशा इस किसी की मदद कर सकते की तरह मेरे बूटस्ट्रैप बदल!

+0

uglt हैशटैग नोटेशन का उपयोग न करें ... केवल HTML5 स्थान रणनीति रखें और अपने सभी कोणीय 2 के मार्गों को index.html फ़ाइल पर रीडायरेक्ट करें। सभी मार्गों को पुनर्निर्देशित न करें क्योंकि आपको अपने अंतिम बिंदु संसाधनों (शेष नियंत्रकों) के लिए उनकी आवश्यकता होगी। – AndroidLover

+0

मैं पुनर्निर्देशन कैसे कर सकता हूं? – Eric

+0

एरिक कृपया एक प्रश्न बनाएं और लिंक पोस्ट करें ताकि मैं कुछ कोड पिछले कर सकूं। – AndroidLover

संबंधित मुद्दे