gpt4 book ai didi

javascript - 仅当 Angular Typescript 不为空时才发送可选的 Restful url 参数

转载 作者:行者123 更新时间:2023-12-01 01:58:58 24 4
gpt4 key购买 nike

我目前控制的系统只是前端,即 Angular 5(即 Typescript)。后端应该不重要,但是有一个团队,他们没有改变他们的签名,他们的错误处理等..:/

问题是有一个搜索屏幕,其中只需要 1 个字段,因此当我尝试将 URL 发送到 Restful 后端时(实际上当我输入此内容时......这并不是真正的 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);
}

Basically what I am showing is in the comments above.

如果参数为空或为 null,那么我不希望将其添加到发送到服务器 Controller 方法的参数列表中...

  1. 如果用户 = 123 发送 http://server.com:9080//rest/config/users?userid=123
  2. 如果用户和名字不为空,发送 http://server.com:9080//rest/config/users?userid=123&first-name=Ted
  3. 切勿发送带有空参数的内容,例如空名字 http://server.com:9080//rest/config/users?userid=123&first-name=

根据该参数列表,如果没有一堆 if 语句检查 null/empty/undefined ,我该如何做到这一点?

第一个、最后一个、用户、eff、term、emp

最佳答案

事实证明,我误读了文档,并且 HttpParams 不会自动删除 null 值。

但是,您可以为此使用数组函数:

getParams(first,last,user,eff,term,emp): HttpParams {
let obj = {first, last, user, eff, term, emp};
return Object.keys(obj).reduce((params, key) =>
obj[key] ? params.append(key, obj[key]) : params, new HttpParams())
}

这将构建一个仅包含真实值的 HttpParams 对象,因此它将排除 null/undefined/空字符串等。

请记住,false0 也是错误值 - 我不确定这是否会成为您的用例中的问题。

关于javascript - 仅当 Angular Typescript 不为空时才发送可选的 Restful url 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50772741/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com