【问题标题】:REST url param naming conventionREST url 参数命名约定
【发布时间】:2015-08-19 11:29:19
【问题描述】:

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

/students?name=&no=

name 和 no 是可选的。

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

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

这些参数的标准命名约定是什么。 我能说吗

/students?nameContains=&noStartsWith=

/students?name=&no=

哪一种方法是正确的?

【问题讨论】:

    标签: rest naming-conventions url-parameters


    【解决方案1】:

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

    ?name=Bob*  <!-- name starts with Bob -->
    ?name=*h   <!-- name ends with h -->
    ?name=Sa?  <!-- name has three letters and starts 'Sa' --> 
    

    对于真正复杂的情况,您需要考虑支持正则表达式或使用现有库来处理搜索。还要考虑是否需要支持?nameIgnoreCase,这会强烈支持通配符而不是多个查询参数。

    【讨论】:

    • 通过使用 RDF 的 REST,可以组合使用三重片段和 URI 模板:hydra-cg.com/spec/latest/triple-pattern-fragments,但这只是一个草案。使用 SPARQL 端点进行查询的另一种选择。您是对的,没有用于通过 HTTP 进行一般查询的标准解决方案。我们需要 RDF 的标准查询描述符词汇,或非 RDF 的 URI 查询的新标准查询语言。通过简单的查询,URI 模板可以提供帮助。
    猜你喜欢
    • 2018-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-21
    • 2016-07-21
    • 2021-07-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多