【问题标题】:Urls in restful webservicesRESTful Web 服务中的 URL
【发布时间】:2013-04-09 17:37:13
【问题描述】:

我已阅读这本电子书,并且我已阅读到您应该尝试将自己限制为两个基本 URL。 因此,如果您有测验资源,您将拥有/quizes/quizes/{id}。然后使用 HTTP 动词进行操作。但是,当您尝试遵循这种模式时,您将如何从服务器获取由随机问题动态生成的测验?

我想/quizes?type=random,但是假设您希望类型属性是可选的,默认为随机,并且您已经使用/quizes 路径来列出所有保存的测验。

创建/quizes/generate?type=random 路径不遵循建议,我认为生成术语也不适合,因为它是动词。

诸如 /quizes 之类的路径是“保留”返回集合(我知道 REST 不是规范)还是使用 /quizes 生成测验服务器端并返回它是完全合法的?

http://apigee.com/about/content/web-api-design

【问题讨论】:

  • 这是一个关于 REST 的合法问题。为什么关门了?
  • @VivinPaliath 最佳实践问题通常过于主观。不过,不确定这个。
  • @JanDvorak 这似乎不是一个最佳实践问题,而是一个关于如何以 REST 方式实现它的问题。

标签: c# java web-services rest


【解决方案1】:

/quizzes 应该做的是为您提供一个 URL 列表,让您可以访问不同的测验,所以假设您已经定义了 /quizzes 返回的媒体类型是 JSON 像这样(可能是特定类型,如 @ 987654323@):

{ 
    quizzes = [
        { description: "Quiz 1", url: "/quizzes/1" },
        { description: "Quiz 2", url: "/quizzes/2" }
    ]
}

所以你可以拥有一个让你访问随机测验的条目,可以是这样的:

{ 
    quizzes = [
        { description: "Quiz 1", url: "/quizzes/1" },
        { description: "Quiz 2", url: "/quizzes/2" },
        { description: "Random", url: "/quizzes/random" },
    ]
}

这个想法是有一个 REST 端点,所有后续 URL 都是通过语义媒体类型发现的。因此,如果您的媒体类型指定将有一个描述为Random 的条目会给您一个随机测验,那么端点消费者可以使用它。

【讨论】:

    猜你喜欢
    • 2014-09-01
    • 2017-01-19
    • 2015-01-26
    • 2011-03-19
    • 2011-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多