Rest 休息是首选吗?

Rest 休息是首选吗?,rest,Rest,理解REST协议时需要考虑的一个问题,因此请联系这里的专家。请澄清 REST建议不要维护服务器状态。REST还建议分层获取资源,一次一级。考虑到这两个因素,服务器被认为很难从数据库中重新获取记录,而不是过滤已经存在的数据块。例如,如果任何应用程序必须获取大陆信息,URL的其余形式将是。作为回应,该应用程序返回所有国家的名称,客户对此表示满意。当需要进一步的细节时,麻烦就从这里开始。在响应内容上,如果客户端查询任何国家以获取其中的城市,那么其余URL将采用以下形式。由于服务器不维护状态,所以它必须

理解REST协议时需要考虑的一个问题,因此请联系这里的专家。请澄清

REST建议不要维护服务器状态。REST还建议分层获取资源,一次一级。考虑到这两个因素,服务器被认为很难从数据库中重新获取记录,而不是过滤已经存在的数据块。例如,如果任何应用程序必须获取大陆信息,URL的其余形式将是。作为回应,该应用程序返回所有国家的名称,客户对此表示满意。当需要进一步的细节时,麻烦就从这里开始。在响应内容上,如果客户端查询任何国家以获取其中的城市,那么其余URL将采用以下形式。由于服务器不维护状态,所以它必须使用ContinuName和CountryName重新运行DB查询。更进一步,查询会在每个级别上重新运行,如国家/地区的城市信息、城市的地区信息。层次结构越深入,添加到DB查询中的AND条件就越多,并且每次都重新运行查询。这是一个好的设计策略吗?

不一定。RESTful API的核心概念是每个资源都有一个唯一的URI。通常,您将使用允许快速数据检索的路径,例如PK值

在您使用特定国家获取特定大陆的示例中,更合适的URI是:

RESTful API的使用者有责任知道他想要获取国家的大陆的ID。(您还可以在API中提供方便的接口)

因此,RESTful服务的消费者会:

  • 得到
  • 搜索大陆数据以获得所需的大陆ID
  • 得到
  • 搜索国家/地区数据以获取所需的国家/地区id
  • 得到
  • 但是消费者也可以自由地存储ID以备将来参考,从而允许他直接执行:
    GEThttp://host/continents/id/countries/id

    至于您担心重新运行DB查询,因为RESTful服务不维护状态,所以它们消耗的资源要少得多。它们本质上是数据库密集型服务。但是关系数据库在数据检索方面进行了极大的优化,特别是在为常见查询条件建立适当索引时

    在这种情况下,我要强调一个共同的建议: 避免过早优化,否则会扼杀您的项目。需要优化时进行优化


    总而言之,如果您的RESTful服务设计良好,数据库结构良好,我怀疑您会因为重复的数据库查询而遇到任何性能问题。

    RESTfull描述的不是内部细节,而是服务的行为。因此,它的行为应该是无状态的。您在问题中用简单的话问的是“尽管我正在实现restful服务,但我可以使用缓存吗?”。答案是肯定的。只要您的服务正常运行。

    REST
    是一种体系结构风格。不是礼节。谢谢你纠正伊万。是的,我应该告诉REST design,谢谢。这解释得很好。我们在尝试更新提案设计文档时遇到了这个问题,我们想知道是否需要强调此设计是否每次都会使用所有字段查询DB,即使是分层调用。服务是否返回所有数据列取决于您。在本例中,我建议在获取所有“国家”时返回一个有限的信息列表,例如
    id、name、continument\u id
    ,因为从“列表”的角度来看,这些信息非常有用。但这是主观的,最终取决于您。另一个问题是URL是否可以包含遵循REST设计原则的控制开关?例如,一个国家内的城市应根据选择以XML或JSON的形式返回。所以我们可以说,在使用REST时,允许使用此表单或URL吗。是否允许以这种方式使用其他参数?使用&,使用传统的URL连接。提前谢谢。是的,你可以。但是,许多这样的参数应该作为请求头提供。非常有帮助和快速的响应。非常感谢。谢谢,但是整个观点是为了避免缓存,因此RESTful设计出现了,使服务器无状态。也许重新考虑某些部分是个好主意,似乎不同类型的方法/策略和技术实现细节之间存在一些混淆。。。