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) {
}
答案 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