Mr.*_*. X 12 parameters jax-rs
我读到在请求中传递数组的HTTP方法是多次设置一个参数:
1) GET /users?orderBy=last_name&orderBy=first_name
Run Code Online (Sandbox Code Playgroud)
但是,我也看到了逗号分隔的参数(我觉得这是"更干净"):
2) GET /users?orderBy=last_name,first_name
Run Code Online (Sandbox Code Playgroud)
我想实现多排序(通过last_name排序用户,然后复制last_names由first_name排序).代码方面,这很容易(谷歌的番石榴图书馆拯救),但我应该如何揭露这个?第一种方法是否保留字段的顺序(按last_name排序,然后按first_name排序)?
如果在请求中多次设置,Spring会将参数神奇地转换为String []数组:
... @RequestParam("orderBy") String[] orderBy ... becomes ["last_name","first_name"]
Run Code Online (Sandbox Code Playgroud)
这让我相信第一种方式被认为是最佳实践,尽管我喜欢第二种方式......
Jak*_*rab 13
第一种方法是首选的标准方法.
您当然可以使用第二种方式,但您必须实现自己的方式来标记请求参数值,以及所涉及的所有问题.例如,考虑如果您的某个值包含','字符会发生什么.
因为第一个是非常标准的,它具有与jax-rs和验证框架很好地匹配的好处; 因为我们总是验证我们的输入,对吗?;)
我认为这是一个见仁见智的问题。JAX-RS 允许您使用以下参数:
@QueryParam("orderBy") List<String> orderBy
Run Code Online (Sandbox Code Playgroud)
我认为它会做与 Spring 关于“神奇转换”部分相同的事情。我不一定认为这表明是否是“最佳实践”。只是某些参数可以有多个值,并且框架允许您读取这些多个值(想想某些 HTML 表单)。
就我个人而言,我会使用以逗号分隔的单个值。正如您所说,它“更干净”,并且该值更容易构建(您不依赖于参数键/值的顺序,这可能会给客户端开发人员带来一些麻烦)。
| 归档时间: |
|
| 查看次数: |
10497 次 |
| 最近记录: |