云网站服务器_国内数据云存储_移动云数据库服务器主机-搜集站云

云数据库_艺伎回忆录百度云资源_排行榜

小七 141 0

云数据库_艺伎回忆录百度云资源_排行榜

在前面的一篇博客中,我们已经学习了实现诸如CREATE和UPDATE之类的写操作的基础知识。在本博客中,这也是初学者系列的一部分,我们将讨论一个更有趣的细节:

更新操作可以发送到一个不存在的地址…这是V4中的一个新功能,它被称为UPSERT,值得一看。

同意吗?

让我们一起喊吧:一个…。两个…。三…。现在:哇

哦,我什么都听不见…;-(

注:UPSERT是新的,而且它由SAP云平台SDK支持,用于服务开发!!!。

我现在能大声叫好吗?

一…。两个…。三…。现在:

谢谢,那很好

所以在这里,我可以介绍你:

是的,一个有趣的名字…没什么好难过的…有趣的建议…

这是一个合并的更新和插入

(这是更新和创建)

现在认真的解释。在UPSERT的情况下,我们可以安全地引用规范,云发布,数据与大数据,因为有两行代码很短,很容易理解:

当客户机向一个有效的URL发送一个更新请求,该URL标识一个不存在的实体时,就会发生UPSERT。在这种情况下,服务必须将请求作为创建实体请求处理,否则请求将全部失败。

UPSERT的规范可以在这里找到: open.org/odata/odata/v4.0/errata03/os/complete/part1 protocol/odata-v4.0-errata03-os-part1-protocol-complete.html#

顺便说一句,我已经提到UPSERT功能在V4中是新的,因此如果您感兴趣,请转到OData V4的新功能页面: open.org/odata/new-in-odata/v4.0/cn01/new-in-odata-v4.0-cn01.html#

到目前为止,解释是关于OData服务应该如何运行的。

但是,对于OData服务的用户来说,以下内容也很有趣:

如果使用"*"值指定if None Match头,则不能将PUT或PATCH请求视为更新。

(同一规范,同一链接)

这意味着用户不只是向任何不存在的URL发送请求。用户还必须指定所需的头。

换言之

更新意味着:

用户发送一个指向单个资源的更新请求(PUT或PATCH)。此资源由其在URL中的键字段指定e、 g.人员(2)

UPSERT表示:

用户发送一个指向单个资源的更新请求。此资源由其在URL中的键字段指定但是,此资源不存在。此外,用户指定一个头字段来表示他有意向不存在的资源发送请求如果这两个要求都满足了,那么更新就变成了升级。

我们一直在讨论我们服务的用户应该做什么。既然我们的用户知道如何进行UPSERT,他肯定会这样做。至少,因为这个有趣的名字,

所以现在该由我们来决定了。

我的意思是,现在我们必须实施升级。

我们该怎么办?

首先,我们必须意识到FWK对我们有帮助。

(和往常一样,值得再一次惊喜)

关于FWK:FWK识别,如果请求是一个UPSERT,或只是一个正常的更新。

注意,用户发送一个更新请求(补丁或PUT)。所以我假设FWK首先检查报头。如果不存在If None Match头,则为正常更新在这种情况下,FWK行为正常并调用@Update实现顺便说一句,在@Update实现中,我们要检查单个资源是否存在

如果if None Match头在那里并且有值*,那么它就是一个UPSERT。然后FWK为指定的键调用@Read实现

为什么FWK调用Read?

因为它必须确定指定的条目是否已经存在。记住:UPSERT意味着用户向一个不存在的资源发送一个更新请求

请注意,这是一个先决条件:@Read必须被实现–正确实现Read是很重要的。当然,正确实施每件事总是很重要的。但在这里,整个UPSERT功能也取决于正确的@Read实现

让我们继续。FWK调用@Read实现

第一种情况:如果读取成功并找到该资源然后上插失败。失败是正确的,因为用户希望执行UPSERT(由标题指示),这意味着他希望创建他在URL中指向的资源因此,如果它已经存在,则创建必须失败,因此UPSERT将被中止,并显示一条错误消息。由FWK处理的,它给出了一个适当的错误消息:"Upsert失败,因为实体已经存在。"

第二种情况:如果读取未找到该资源并返回错误响应,则FWK将检查错误的状态代码:如果状态码不是什么有趣的东西,大数据提供,例如status 400,那么FWK只返回这个由服务开发人员实现的错误响应。如果状态码表明实体未找到,即状态404–未找到,只有这样,FWK才高兴并继续向上插入。

我说过"继续向上插入",但这并不意味着现在调用更新方法。不,不,不。在我们的情况下,我们想做一个创造因此,FWK在(错误的)READ

之后调用@Create方法,这意味着只有在@Create被实现的情况下,UPSERT才是可能的。这是另一个先决条件

这是最后一个故事的结尾:@Create方法创建所需的实体。

注意:你注意到了吗?我们在代码区,但没有代码片段。是的,如何学习大数据,没错:不需要代码。对于UPSERT,我们不需要额外的代码,只需要满足上述前提条件。

让我们记住:

顺便说一句:对于UPSERT,云服务器特价,不强制存在@Update implementation.