【发布时间】:2018-06-09 09:20:55
【问题描述】:
我可以控制的当前系统只是前端,即 Angular 5(因此是 Typescript)。后端应该无关紧要,但是有一个团队不会更改签名、错误处理等。:/
问题是有一个只需要 1 个字段的搜索屏幕,所以当我尝试将 URL 发送到 Restful 后端时(实际上当我输入这个时......这并不是真的很安静,是吗?)
我的 Angular 服务方法:
getSearchByUserResults(first,last,user,eff,term,emp) {
//IF I JUST DO THIS, THEN EMPTY PARAMS ARE SENT AND SOMEHOW THE BACKEND IS NOT SET UP TO HANDLE THAT :/
//var params = "userid=" + user + "&first-name=" + first + "&last-name=" + last + "&eff-date=" + eff + "&term-date=" + term + "&employee-id=" + emp;
//Sending only userid works
//var params = "userid=" + user;
// Send user and first when first name is empty(null) again it does NOT work
var params = "userid=" + user + "&first-name=" + first;
var searchUser = this._searchByUser + params;
return this._http.get(searchUser).map((response: Response) => response.json()).catch(this.handleError);
}
基本上我所展示的是上面的 cmets。
如果一个参数为空或 null,那么我不希望它被添加到发送到服务器控制器方法的参数列表中......
- 如果用户 = 123 发送http://server.com:9080//rest/config/users?userid=123
- 如果用户和名字不为空发送http://server.com:9080//rest/config/users?userid=123&first-name=Ted
- 永远不要发送带有空参数的东西,比如空的名字http://server.com:9080//rest/config/users?userid=123&first-name=
基于该参数列表,如果没有一堆 if 语句检查 null/empty/undefined ,我该如何做到这一点?
first,last,user,eff,term,emp
【问题讨论】:
-
从您的代码看来,您仍在使用旧的
Http包而不是HttpClient,因此我建议您将其换掉。完成后,您可以使用HttpParams对象:angular.io/guide/http#url-parameters -
当然,但是没有旧 Http 的例子吗?
-
是的,但你会使用一些自 4.3 以来已被弃用的代码,并将在 Angular 的未来版本中删除
-
你能给我看一个例子吗?
标签: javascript angular rest typescript parameter-passing