Angular客户端未调用后端服务

时间:2018-08-13 12:34:52

标签: go angular5

我正在开发示例应用程序,其中将Angular 5用于前端,将Go Lang用于其余服务(Web服务)。这里我的角度不是呼叫服务,但是当我通过粘贴url从Google运行并在Go中添加CORS时,这些服务运行良好。这是我的角度代码:

export class TestServiceService {

private url2 ='http://localhost:8000/api/books/';

  constructor(private http : HttpClient) { }

  getValues() 
  {
    debugger;
     return this.http.get(this.url2);
  };

}

这是我的Go代码package主要

import (
    "encoding/json"
    "fmt"
    "log"
    "net/http"

    "github.com/gorilla/mux"
)

//Book struct
type Book struct {
    RollNo    string `json:"rollNo"`
    FirstName string `json:"firstName"`
    Author    string `json:"author"`
}

var books []Book

func getBooks(w http.ResponseWriter, r *http.Request) {
    fmt.Println("Method hit")
    w.Header().Set("Content-Type", "application/json")
    json.NewEncoder(w).Encode(books)
}

func main() {
    r := mux.NewRouter()

    fmt.Println("started service")

    books = append(books, Book{RollNo: "1", FirstName: "Ravi", Author: "Dan"})

    r.HandleFunc("/api/books/", getBooks).Methods("GET")

    log.Fatal(http.ListenAndServe(":8000", r))
}

以下是该屏幕截图显示的服务正常运行的地方:

enter image description here

这里的service方法不是用angular调用的,没有错误

2 个答案:

答案 0 :(得分:0)

您应该导入并注入HttpClient,

import {Injectable} from '@angular/core';
import {HttpClient} from '@angular/common/http';

@Injectable()
export class TestServiceService {

private url2 ='http://localhost:8000/api/books/';

constructor(private http : HttpClient) { }

getValues() 
{
    debugger;
    return this.http.get(this.url2);
};


}

答案 1 :(得分:0)

您如何在角度组件中调用服务的方法?

请参阅角度指南HttpClient部分。 https://angular.io/guide/http#getting-json-data

因为您没有显示Angular组件的代码,所以我不知道您的问题的根本原因。我假设您可以订阅Observable,这是getValues方法的返回值。它应该像下面(请参阅文档):

showConfig() {
  this.configService.getConfig()
    .subscribe((data: Config) => this.config = {
        heroesUrl: data['heroesUrl'],
        textfile:  data['textfile']
    });
}