Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jpa java restful web服务中的I功能_Jpa_Restful Architecture - Fatal编程技术网

Jpa java restful web服务中的I功能

Jpa java restful web服务中的I功能,jpa,restful-architecture,Jpa,Restful Architecture,我试图在RESTfulAPI的上下文中理解IDomponent方法的概念,但我不能真正理解它。为什么POST方法不是IDomponent,而PUT方法是IDomponent? 我感到困惑,因为在PutAPI的用例中,我使用JPA的合并方法,如果不存在一个实体,它会在DB中创建一个新实体。因此,我的PUT API在某些情况下的行为类似于POST API。那么这是否意味着PUT现在变成了非IDomponent? 我想我甚至不了解这个主题的基本知识。你是对的,PUT和POST有相似的效果,它们都可以创

我试图在RESTfulAPI的上下文中理解IDomponent方法的概念,但我不能真正理解它。为什么POST方法不是IDomponent,而PUT方法是IDomponent? 我感到困惑,因为在PutAPI的用例中,我使用JPA的合并方法,如果不存在一个实体,它会在DB中创建一个新实体。因此,我的PUT API在某些情况下的行为类似于POST API。那么这是否意味着PUT现在变成了非IDomponent?
我想我甚至不了解这个主题的基本知识。

你是对的,PUT和POST有相似的效果,它们都可以创建资源。但有时它们的行为也不同,正是在这种差异中,一个是幂等的,另一个不是

如果一个请求方法一次收到的效果与一行收到两次、三次或n次的效果相同,则称该请求方法为幂等

以Facebook为例。Like是幂等的;如果我告诉Facebook一次、两次或三次我喜欢某个项目,那么所有这些都会产生相同的效果:我的用户对该项目只喜欢一次

现在假设我向Facebook发送了一个like,但在我的浏览器中响应超时。我不知道Facebook是否得到了我的喜欢。我可以重新发送我喜欢的邮件吗?答案是肯定的!即使他们收到了我的第一封邮件,第二次或第三次发送也没什么害处

另一方面,考虑脸谱网评论。注释不是幂等的。如果我对一个项目发送一次相同的评论,那么结果就是对该项目发送一条评论。如果我三次发送相同的评论,那么结果是对该项目的三条评论。如果我向帖子发送评论,而我的浏览器超时,我是否可以重新发送评论?答案是否定的:在再次发送之前,我可能应该刷新页面,看看是否添加了我的评论

这就是将方法指定为幂等/非幂等的要点:如果客户端在幂等方法上遇到响应超时,它知道再次发送该请求是安全的;如果客户端在非幂等方法上遇到响应超时,则它不知道再次发送该请求是否安全

考虑到这一点,让我们看看PUT和POST

POST用于将资源添加到集合中。通常,您会将资源发布到类似“/api/students/”的端点。这就产生了一个新的学生。如果您将学生Jimmy发布到“/api/students/”上一次,那么您就得到了一个新Jimmy。但是如果你将学生Jimmy三次发布到“/api/students/”,那么你就有了三个新Jimmie!这不是幂等性


PUT用于在已知uri处创建或更新资源。假设你的学生有URI“/api/students/1”、“/api/students/2”等等。如果你把Jimmy放在“/api/students/43”,那么结果是Jimmy现在在“/api/students/43”;如果已经有一个学生43,则该学生被替换,如果没有,则创建一个。如果您再次将Jimmy置于“/api/students/43”,那么效果仍然是Jimmy位于“/api/students/43”。你可以将Jimmy设置为“/api/students/43”n次,效果与只做一次没有什么不同。这就是幂等性。

你是对的,PUT和POST有相似的效果,它们都可以创建资源。但有时它们的行为也不同,正是在这种差异中,一个是幂等的,另一个不是

如果一个请求方法一次收到的效果与一行收到两次、三次或n次的效果相同,则称该请求方法为幂等

以Facebook为例。Like是幂等的;如果我告诉Facebook一次、两次或三次我喜欢某个项目,那么所有这些都会产生相同的效果:我的用户对该项目只喜欢一次

现在假设我向Facebook发送了一个like,但在我的浏览器中响应超时。我不知道Facebook是否得到了我的喜欢。我可以重新发送我喜欢的邮件吗?答案是肯定的!即使他们收到了我的第一封邮件,第二次或第三次发送也没什么害处

另一方面,考虑脸谱网评论。注释不是幂等的。如果我对一个项目发送一次相同的评论,那么结果就是对该项目发送一条评论。如果我三次发送相同的评论,那么结果是对该项目的三条评论。如果我向帖子发送评论,而我的浏览器超时,我是否可以重新发送评论?答案是否定的:在再次发送之前,我可能应该刷新页面,看看是否添加了我的评论

这就是将方法指定为幂等/非幂等的要点:如果客户端在幂等方法上遇到响应超时,它知道再次发送该请求是安全的;如果客户端在非幂等方法上遇到响应超时,则它不知道再次发送该请求是否安全

考虑到这一点,让我们看看PUT和POST

POST用于将资源添加到集合中。通常,您会将资源发布到类似“/api/students/”的端点。这就产生了一个新的学生。如果您将学生Jimmy发布到“/api/students/”上一次,那么您就得到了一个新Jimmy。但是如果你将学生Jimmy三次发布到“/api/students/”,那么你就有了三个新Jimmie!这不是幂等性


PUT用于在已知uri处创建或更新资源。假设你的学生有URI“/api/students/1”、“/api/students/2”等等。如果你把Jimmy放在“/api/students/43”,那么结果是Jimmy现在在“/api/students/43”;如果已经有一个学生43,则该学生被替换,如果没有,则创建一个。如果您再次将Jimmy置于“/api/students/43”,那么效果仍然是Jimmy位于“/api/students/43”。你可以将Jimmy设置为“/api/students/43”n次,效果与只做一次没有什么不同。这就是幂等性。

非常感谢JASchilz。非常感谢JASchilz。