REST url 参数命名约定
REST url param naming convention
我有一个搜索学生的 REST 调用
/students?name=&no=
name 和 no 是可选的。
我正在搜索姓名包含的学生。也就是说,如果我发送 name="sh" 那么它将 return 所有名称 包含 "sh".
的学生
和
表示不,它不是以 no 开头,即如果 no=10 那么它将 return 所有没有 以 开头的学生 10
这些参数的标准 命名约定是什么。
我可以说
/students?nameContains=&noStartsWith=
或
/students?name=&no=
哪一个是正确的方法?
不存在查询参数的标准命名约定。在您的具体情况下,这取决于未来需求的可能性。如果只是 nameContains
,嗯,那比 name
好多了。但是,如果您需要 nameContains
、nameStartsWith
、nameEndsWith
等,那很快就会变得一团糟。那么您应该考虑使用单独的资源来指定搜索条件,或者将通配符添加到您的 name
,例如:
?name=Bob* <!-- name starts with Bob -->
?name=*h <!-- name ends with h -->
?name=Sa? <!-- name has three letters and starts 'Sa' -->
对于真正复杂的情况,您需要考虑支持正则表达式或使用现有库来处理搜索。还要考虑是否需要支持 ?nameIgnoreCase
,这会强烈支持通配符而不是多个查询参数。
我有一个搜索学生的 REST 调用
/students?name=&no=
name 和 no 是可选的。
我正在搜索姓名包含的学生。也就是说,如果我发送 name="sh" 那么它将 return 所有名称 包含 "sh".
的学生和
表示不,它不是以 no 开头,即如果 no=10 那么它将 return 所有没有 以 开头的学生 10
这些参数的标准 命名约定是什么。 我可以说
/students?nameContains=&noStartsWith=
或
/students?name=&no=
哪一个是正确的方法?
不存在查询参数的标准命名约定。在您的具体情况下,这取决于未来需求的可能性。如果只是 nameContains
,嗯,那比 name
好多了。但是,如果您需要 nameContains
、nameStartsWith
、nameEndsWith
等,那很快就会变得一团糟。那么您应该考虑使用单独的资源来指定搜索条件,或者将通配符添加到您的 name
,例如:
?name=Bob* <!-- name starts with Bob -->
?name=*h <!-- name ends with h -->
?name=Sa? <!-- name has three letters and starts 'Sa' -->
对于真正复杂的情况,您需要考虑支持正则表达式或使用现有库来处理搜索。还要考虑是否需要支持 ?nameIgnoreCase
,这会强烈支持通配符而不是多个查询参数。