2016-03-08 148 views
0

我使用此tutorial来使用GoLang,Angular2和Dart创建Web应用程序,但是当我通过控制台命令“backend”启动后端并在浏览器中路由到“localhost: 8080 /“它必须从Dart的类”Hello“调用方法,但它不会调用,并且我得到404错误。我从教程中获得的所有代码并没有改变任何内容。我找不到任何其他教程。你能解释我有什么问题吗?无法使用dart和angular2客户端运行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

什么是 “应用程序”,“应用程序没有按”连续等到飞镖一侧“?为什么“应用程序”会连接到“Dart side”?如果在客户端(使用Angular)上使用Dart,则客户端必须连接到服务器而不是其他方式。 –

+0

@GünterZöchbauer当我进入浏览器本地主机:8080 /它必须调用“Hello”处理程序,它描述在web/main.dart但它不这样做,只是重定向到404 – EgorkZe

+0

@GünterZöchbauer是正确的。 尝试本地化问题。首先检查 - 服务器端是否正在响应HTTP请求(从bwoser输入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

我添加了你说的,但它没有帮助(是否有新的教程飞镖angular2和去? – EgorkZe

+1

我还没有看到Angular2和Go的任何教程。 –