【问题标题】:Angular 5: HttpParams Send Integer Instead Of String Value?Angular 5:HttpParams 发送整数而不是字符串值?
【发布时间】:2017-12-26 17:28:08
【问题描述】:

只要 db 列 subCatId 需要一个 varchar 字符串,它就可以正常工作。

this.params = {
   'filter': `(${column} like ${subCatId}%)`
}

当列需要整数时失败,可能是由于反引号将整个 URL 参数转换为字符串。

我一直在尝试这种方法的变体,但都没有奏效。他们不会编译。

'filter': `${column}%3D`${subCatId}
or
'filter': `${column}=`${subCatId}

这确实有效,使用 Swagger 生成:

http://localhost:8080/api/v2/pfpsql/_table/skills?
   fields=skill_id%2C%20skill_name%2C%20category_id&filter=category_id%20%3D%202

因此,Swagger 示例不会对表列整数约束产生问题。 Angular 代码可以。字符串末尾的“2”是 Angular HttpParams 中的问题。字段工作正常。

任何想法如何做到这一点?可能很简单,但我是这个主题的新手,并且通过多次搜索无法在线找到建议。

【问题讨论】:

  • 您能否提供一些示例,说明在您说它不起作用的情况下 URL 的样子? ? 之后的任何内容都称为查询-字符串,因此整个内容都是一个字符串(是的,它押韵),即使在您的 Swagger 示例中也是如此。
  • 这是一个渗透:localhost:8080/api/v2/pfpsql/_table/…。结果只是表中的第一条记录,与 category_id 无关。我应该提到编译问题是在上面的 Angular 版本中 category_id 的右侧。这些领域运作良好。最后的“2”是问题所在。我会将此评论添加到主帖中。
  • 为什么您的第一个示例以% 结尾?我猜这是针对LIKE '%' 样式的查询,但如果列需要整数,那当然行不通。我无法确切地看到您要实现的目标,因为您的“坏”示例与第一个代码 sn-p 的结构不同。顺便说一句,这看起来有受到SQL Injection 攻击的风险......
  • 是的,就像'喜欢'。我只是在我的帖子中更改了它。那是有效的设置——直到我将列从字符串更改为整数,因为看起来数字 id 应该是整数。这是出于开发目的。当我到达后端编码时,我会将参数发送到服务器以进行查询。
  • 对于没有编译的两行,只需将第二个 ` 移动到行尾,看看是否符合您的需要。

标签: angular


【解决方案1】:

为了将来参考,这是整个 http 调用。非常感谢柯克·拉金!请参阅带有 OP 的 cmets 作为背景。

public getSubCatTags(dbTable, column, subCatId):  Observable<any>  {
this.params = {
      'fields': `skill_id, skill_name, category_id`,
      'filter': `${column} = ${subCatId}`
    };
    return this.http.get<any>(`${this.baseUrl}${dbTable}`, {params: this.params, headers: this.headers});
  }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多