REST url 参数命名约定

标签 rest naming-conventions url-parameters

我有一个 REST 调用来搜索学生

/students?name=&no=

名称和编号是可选的。

我正在搜索姓名包含的学生。即,如果我发送 name="sh"那么它将返回名称包含“sh”的所有学生。

对于 no,它不是以 ie 开头,如果 no=10,那么它将返回所有没有开头 10 的学生

此类参数的标准命名约定是什么。 我可以说吗

/students?nameContains=&noStartsWith=

或者

/students?name=&no=

哪一种是正确的方法?

最佳答案

查询参数不存在标准命名约定。在您的具体情况下,这取决于 future 需求的可能性。如果只是 nameContains,那么,这比 name 好得多。但如果您需要 nameContainsnameStartsWithnameEndsWith 等,那很快就会变得困惑。然后,您应该考虑指定搜索条件的单独资源或向您的名称添加通配符,例如:

?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/

相关文章:

vba - VBA 模块的命名约定?

java - 在 Struts 2 中传递 URL 参数而不使用查询字符串

java - 重定向到 URL 时无法访问 SpringMVC Controller 中的请求参数

javascript - 如何用 javascript/jquery 替换 url 参数?

rest - 将 Swagger UI 嵌入 Blazor 服务器端应用程序

iphone - 从 Google App Engine 的数据存储中获取实体以用于 iOS 应用

ios - 从 Swift 函数中的异步调用返回数据

java - 返回元素集合的 Java 方法的正确命名约定是什么?

python - 如果内部的模块名称和类名称具有相同的名称,Python 中是否存在任何风险?

java - JasperReports - 如何在 Java 中使用远程 JSON 数据报告运行报告