【问题标题】:How to implement 'fields' paramenter for 'get' in REST API in server side如何在服务器端的 REST API 中为“get”实现“fields”参数
【发布时间】:2016-03-27 13:48:52
【问题描述】:

我想知道,如何在服务器端的 REST API 中为“get”实现“fields”参数。

例如:http://example.com/user?fields=firstName,lastName

这里我必须从 users 表中获取 firstName 和 lastName。

我应该将表字段命名为 firstName、lastName 并选择字段列表中的所有列还是使用别名并从别名中找到列名并选择它们?

我还有一些安全字段,例如密码哈希,不应该被请求。所以我也需要设置一些限制。所以在服务器端,我必须手动检查这些字段(还有 * 或 users.* 等)。但是这些字段应该允许更新。

谁能告诉我在安全性、性能和简洁代码方面实现这一点的最佳方法?

【问题讨论】:

    标签: api rest get field


    【解决方案1】:

    假设您有一个普通的 Web 应用程序,您可以对所有请求使用不带任何查询参数的请求,并在客户端上显示/隐藏列。您可能会在第一次请求时返回太多数据,但您不需要额外的请求,因为所有数据都已经存在。

    编辑:当然,您不应在查询中包含“passwordHash”或其他敏感数据。

    【讨论】:

    • 你绝对不应该向 REST API 公开像“passwordHash”这样的安全字段。我同意@enigma969 的观点,即不需要fields 查询参数。如果您有包含大量数据的字段,并且您不想在每个请求中获取它,只需使用单独的路径,例如 /user/{id}/field_with_large_amount_of_data/large_user_data_field/{userId}
    • 如果我有 100 列并且每列包含中等大小的数据怎么办?
    猜你喜欢
    • 2018-07-29
    • 2014-04-19
    • 1970-01-01
    • 2011-10-11
    • 2020-03-20
    • 1970-01-01
    • 2018-04-29
    • 1970-01-01
    • 2011-06-30
    相关资源
    最近更新 更多