2016-03-08 2 views
0

Я использую это tutorial, чтобы сделать веб-приложение с GoLang, Angular2 и Dart, но когда я запустил бэкэнд с помощью командной консоли «backend» и маршрут в браузере «localhost: 8080/«он должен вызывать метод из класса Дарта« Привет », но он не вызывает, и я получаю ошибку 404. Весь код, который я получил от учебника, ничего не изменил. И я не могу найти никаких других учебников. Можете ли вы объяснить мне, что я делаю неправильно?Не удается запустить бэкэнд GolLang с дроком и угловым клиентом

код GoLang:

func main() { 
    http.Handle("/", http.FileServer(http.Dir("./app/web/"))) 

    fmt.Println("Text") 
    http.HandleFunc("/api/hello", helloWorld) 
    http.ListenAndServe(":8080", nil) 

} 
func helloWorld(w http.ResponseWriter, r *http.Request) { 
    data := struct { 
     Message string 
    }{ 
     "Hello, World", 
    } 

    if err := json.NewEncoder(w).Encode(data); err != nil { 
     log.Println(err) 
    } 
} 

и угловой код дротик: структура

class AppComponent { 
    Hello hello = new Hello(); 
} 

class Hello{ 
    String message; 

    Hello(){ 

    HttpRequest.getString('/api/hello') 
     .then((String content) { 
      Map parsedMap = JSON.decode(content); 
      message = parsedMap["Message"]; 
     }) 
     .catchError((Error error) { 
      print(error.toString()); 
     }); 
    } 
} 

и проект: enter image description here

+4

Что такое "приложение" в «приложение Безразлично» t conn ect to Dart side "? Почему «приложение» подключается к «стороне Дарта» ?. Если Dart используется на клиенте (с угловым), клиент должен подключиться к серверу, а не наоборот. –

+0

@ GünterZöchbauer, когда я иду в браузере на localhost: 8080/он должен вызывать обработчик «Hello», который описывает в web/main.dart, но он этого не делает, и просто перенаправляет на 404 – EgorkZe

+0

@ GünterZöchbauer прав. Попробуйте локализовать проблему. Первая проверка - серверная сторона работает и отвечает на HTTP-запросы (от пользователя-посредника, введя URL-адрес в адресную строку, а не из Dart). Если это работает, вам необходимо предоставить некоторую информацию о том, как вы вызываете сервер, и каковы журналы ошибок. Работает ли http: // localhost: 8080/api/hello? –

ответ

1

В учебнике довольно старая. Вам нужно переключиться на HashLocationStrategy (это было по умолчанию, насколько мне известно).

См https://angular.io/docs/ts/latest/api/router/HashLocationStrategy-class.html

Изменить

bootstrap(AppComponent); 

в

bootstrap(AppComponent, [ 
    ROUTER_PROVIDERS, 
    provide(LocationStrategy, {useClass: HashLocationStrategy}) 
]); 

Кроме того, необходимо добавить дополнительный импорт

import 'package:angular2/router.dart' 
    show 
     HashLocationStrategy, 
     LocationStrategy, 
     ROUTER_PROVIDERS; 
+0

Я добавил то, что вы говорите, но это не помогло (Есть ли новые уроки для стрелки углового2 и идти? – EgorkZe

+1

Я не видел никаких учебных пособий для Angular2 и Go. –