我有一个 REST 调用来搜索学生
/students?name=&no=
名称和编号是可选的。
我正在搜索姓名包含的学生。即,如果我发送 name="sh"那么它将返回名称包含“sh”的所有学生。
和
对于 no,它不是以 ie 开头,如果 no=10,那么它将返回所有没有开头 10 的学生
此类参数的标准命名约定是什么。 我可以说吗
/students?nameContains=&noStartsWith=
或者
/students?name=&no=
哪一种是正确的方法?
最佳答案
查询参数不存在标准命名约定。在您的具体情况下,这取决于 future 需求的可能性。如果只是 nameContains
,那么,这比 name
好得多。但如果您需要 nameContains
、nameStartsWith
、nameEndsWith
等,那很快就会变得困惑。然后,您应该考虑指定搜索条件的单独资源或向您的名称
添加通配符,例如:
?name=Bob* <!-- name starts with Bob -->
?name=*h <!-- name ends with h -->
?name=Sa? <!-- name has three letters and starts 'Sa' -->
对于真正复杂的情况,您需要考虑支持正则表达式或使用现有库来处理搜索。还要考虑一下您是否需要支持 ?nameIgnoreCase
,这会强烈支持通配符而不是多个查询参数。
关于REST url 参数命名约定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32094239/