Angular 2使用web api

时间:2017-03-23 16:04:19

标签: angular asp.net-web-api asp.net-web-api2

我有网络API方法从EmpID获取数据,我从Angular 2调用此方法,并希望将数据绑定到表单以更新它。

我认为我没有正确地从服务中调用Web API方法, 但它给出了我们无法找到此Web API方法的错误。

Web API方法:

    [ Route("api/Employee/GetEdit/{id:int}") ]       
    public Employee GetEdit(int id) {
        return db.Employees.Where(t => t.EmpID == id).FirstOrDefault();
    }

以下是我的服务:

 GetEdit(id:any) {
    let headers = new Headers({ 'Content-Type': 'application/json', 'Accept': 'application/json' });
    let options = new RequestOptions({ headers: headers });
    return this.http.get('http://localhost:49221/Employee/GetEdit/' + id,  headers)
        .map((res: Response) => res.json());

    //return this.http.get('http://localhost:49221/api/Employee')
    //    .map(this.extractData)
    //    .catch(this.handleError);
}

以下是我的组件类:

 getEdit() {
    this._service.GetEdit(1).subscribe(              
        posts => this.employee = posts,
        error => console.error(error)
    )};

1 个答案:

答案 0 :(得分:1)

您的代码看起来很好,但我认为您忘记将 api 放在您的网址中,这就是您无法获取所需信息的原因。

您还可以考虑为基本网址创建变量,然后只需将ID添加到其末尾,这样您的代码就会变得更清晰。

GetEdit(id:any) {
    let headers = new Headers({ 'Content-Type': 'application/json', 'Accept': 'application/json' });
    let options = new RequestOptions({ headers: headers });
    return this.http.get('http://localhost:49221/api/Employee/GetEdit/' + id,  headers)
        .map((res: Response) => res.json());

    //return this.http.get('http://localhost:49221/api/Employee')
    //    .map(this.extractData)
    //    .catch(this.handleError);
}

这是http呼叫的固定版本,并在网址中添加了 api 关键字。

P.S:您还可以考虑将响应转换为确切的对象(如果您为此目的创建了特定的类)

这样的事情:

getEdit() {
    this._service.GetEdit(1).subscribe(              
        posts => this.employee = <Employee>posts,
        error => console.error(error)
    )};

正如我所说,这是考虑到您已经创建了一个员工类。