在Spring Boot中为生产代码创建REST服务,示例和模板的规则

时间:2018-03-26 11:44:03

标签: java spring rest spring-boot rules

欢迎,这是我在Stack上的第一个问题,所以大家好。

我是Spring Boot和REST API的新手,我必须创建具有良好项目模板(包,类,接口)和良好项目模式的项目,但我从未见过任何REST项目SpringBoot。在这种情况下,我想请您描述REST Api的一些良好习惯,规则,模式和示例,以便从中获取一些数据并测试一些使用情况。我很感激github或教程链接的源代码。 最后的简短问题:

1)当请求没有结果时,api的行为应该如何?标题状态或其他内容中的空页或错误?

2)当请求错误(不存在)时,api的行为应该怎样?

感谢您的回复和问候,

卡米尔

1 个答案:

答案 0 :(得分:0)

Spring只是为Spring提供REST方式。关于它没有任何哲学上的REST。它不是专为REST设计的,而是专为支持良好的REST设计而设计的。

一般来说,好的REST设计需要考虑的一些事情是:

REST的3个级别:

Richardson Maturity Model
Three Levels of the REST Maturity Model

附带一些代码示例:
ETags for REST with Spring

Why would ETags set to a MUST requirement if you already have the resource?

Understanding HATEOAS

至于返回空结果,那是错误吗?找不到东西是不寻常的?如果没有,请不要引发异常并返回错误。你返回的内容取决于你想如何处理搜索没有返回的异常情况。您可以使用一些简单的JSON解释返回404,但404不需要解释。

请求不存在的端点很明显,请求甚至不会找到您,因为服务器将返回404。

“错误”的问题通常取决于REST所代表的域。找不到任何东西的搜索不是错误。当域没有“名称”字段时,在“名称”字段上搜索是客户端错误和异常。

因此基本上有3个方面需要研究。

  1. 一般的REST概念(动词,关卡,超媒体等)
  2. Spring如何支持这些REST概念
  3. 如何返回响应(JSON,XML?)并在客户端通过REST端点与您的域交互时处理错误