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

标签 javascript angular rest typescript parameter-passing

我目前控制的系统只是前端,即 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/

相关文章:

嵌套在生成器中的函数产生的 Javascript

javascript - 如何在包 json 中使用环境变量或以其他方式使用环境变量

angular - 如何在 ag-Grid Angular 设置中访问 c​​olumnDefs 中另一列的值?

html - Angular 中的羽毛笔编辑器 (editor.root.innerHTML)

css - 如何为使用 ngFor (Angular) 动态生成的多个类定义相同的 css 属性?

javascript - 如何获取(内置)麦克风的硬件信息?

javascript - 在 node-supervisor 中,我如何观察目录中的所有内容以进行更改?

java - JiraRestClient 搜索未返回 JQL 查询的结果

javascript - REST API 删除请求和更新分页

rest - Feign REST 客户端 : How to get the HTTP status?