【问题标题】:What is the idiomatic way to structure an HTTP route with filters?用过滤器构造 HTTP 路由的惯用方法是什么?
【发布时间】:2016-01-27 11:30:22
【问题描述】:

我编写了一个提供一些 HTTP 路由的 Web 服务,其中一个的结构如下:

/grid/get-foos?filters={"type": ["bar"], "status": ["baz", "qux"]}

filters 参数是一个序列化的 JSON 对象。有一组可接受的键,每个键的值都应该是一个数组,如上所述。我正在尝试过滤get-foos,只返回符合过滤器标准的foos。上面写着“给我带有 bar 类型和状态 baz 或 qux 的 foos”。

我的团队中有人告诉我,以这种方式序列化 JSON 并将其粘贴到查询字符串中是不标准的。是吗?我是新手。

什么是最惯用的方式(甚至只是一种好方式)来构建过滤这样的“getter”的 API 调用?

编辑:应该提到,这是用带有 ring 和 compojure 的 clojure 编写的。

【问题讨论】:

    标签: json api rest http


    【解决方案1】:

    我建议你使用下一种方式:

     /grid/get-foos?types[]=bar&statuses[]=baz&statuses[]=qux
    

    但请记住:您应该有一个可以接受此类参数的框架。

    【讨论】:

      【解决方案2】:

      受@Arsen 启发,我发现 compojure 支持重复参数,请参见此处:How to get repeating request parameters in Compojure

      我仍然想知道我最初所做的是否不标准......和/或不好?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-07-08
        • 2017-07-28
        • 1970-01-01
        相关资源
        最近更新 更多