替换为Angular 2,400中的$ Resource错误请求

时间:2017-01-01 16:02:21

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

Angular 1服务 我正在将我的应用程序从angular 1迁移到angular 2。 这个有角度的1服务调用正常工作并返回响应

 "getUserResource": function () {
                        return $resource(basePath + "api/v3/user/GetUser/:name", { name: "@name",password: "@password"}, {
                            get: { method: "GET", isArray: true }
                        });
                    },

Angular 2 此角度2调用未触及web Api控制器,并且出现400 bad request错误

getUserResourcePromise(): Promise<User[]> {
        let params = new URLSearchParams();
        params.set('name', 'test');
        params.set('password', 'test');
        return this.http.get(this.baseUrl + 'api/v3/user/GetUser/:name', { search: params.toString(), headers: this.headers })
            .toPromise()
            .then(response => response.json().data as User[])
            .catch(this.handleError);
    }

Angular 1 vs Angular 2网址

http://localhost:58999/api/v3/user/GetUser/test?password=test(angular 1 url)
http://localhost:58999/api/v3/user/GetUser/:name?name=test&password=test(angular 2 url)

web api控制器

任何人都可以告诉我如何使角度2 URL命中这个控制器,我需要做些什么改变?

 [RoutePrefix("api/v3/user")]

 [HttpGet]
     [ResponseType(typeof(UsersModel))]
     [Route("GetUser/{name}")]
     public async Task<IHttpActionResult> GetUser(string name,string password) {
     }

1 个答案:

答案 0 :(得分:0)

我想你必须对你的网址进行硬编码......

getUserResourcePromise(): Promise<User[]> {
        let querystring = 'test?password=test'
        return this.http.get(this.baseUrl + 'api/v3/user/GetUser/'+queryString, {headers: headers})
            .toPromise()
            .then(response => response.json().data as User[])
            .catch(this.handleError);
    }

如果您使用变量,queryString当然会看起来像这样:

let queryString = username+'?password'+password