Kubernetes C# 客户端 API 之间的区别
Difference between Kubernetes C# client APIs
我有 KubernetesClient 代码 运行 我在 K3s Orchestrator 上的应用程序。
我想了解两个 K3s API PatchNamespacedServiceWithHttpMessagesAsync
和 ReplaceNamespacedServiceWithHttpMessagesAsync
[link to these APIs] 之间的区别(用例)。除此之外 link 我找不到任何地方可以阅读有关 K3s API 用例的信息。请在这里帮助我。
PS:
- 基本上我正在尝试更新现有的服务,所以想了解上述两个 API 之间的区别,我将使用更新的补丁主体(更新的服务部署)调用其中任何一个。
- 这个问题是我的
的扩展
TL;DR
ReplaceNamespacedServiceWithHttpMessagesAsync
使用 PUT HTTP method. PatchNamespacedServiceWithHttpMessagesAsync
use PATCH HTTP 方法。
PUT 方法是更新或创建一个新的对象。如果这样的对象已经存在,则更新所有数据,如果不存在,则根据发送的信息创建一个新对象。 PATCH 方法与 PUT 一样,用于更新有关对象的数据,但它需要对象存在。这是因为它没有在请求中发送完整的数据,而只发送了要更新的数据。
总的来说,这两个 API 彼此非常相似。它们仅在几个地方不同:
我们在第一行有一个不同的名字:
在ReplaceNamespacedServiceWithHttpMessagesAsync
public async Task<HttpOperationResponse<V1Service>> ReplaceNamespacedServiceWithHttpMessagesAsync(
V1Service body,
并在 PatchNamespacedServiceWithHttpMessagesAsync
中:
public async Task<HttpOperationResponse<V1Service>> PatchNamespacedServiceWithHttpMessagesAsync(
V1Patch body,
在PatchNamespacedServiceWithHttpMessagesAsync
的第7行添加了一个bool
bool? force = null,
第 36 行:
tracingParameters.Add("force", force);
ReplaceNamespacedServiceWithHttpMessagesAsync
的第 37 行和 PatchNamespacedServiceWithHttpMessagesAsync
的第 39 行也不同:
ServiceClientTracing.Enter(_invocationId, this, "ReplaceNamespacedService", tracingParameters);
对
ServiceClientTracing.Enter(_invocationId, this, "PatchNamespacedService", tracingParameters);
然后添加片段(从第 56 行到第 59 行)PatchNamespacedServiceWithHttpMessagesAsync
:
if (force != null)
{
_queryParameters.Add(string.Format("force={0}", System.Uri.EscapeDataString(SafeJsonConvert.SerializeObject(force, SerializationSettings).Trim('"'))));
}
最后也是最重要的区别是 ReplaceNamespacedServiceWithHttpMessagesAsync
中的第 65 行和 PatchNamespacedServiceWithHttpMessagesAsync
中的第 71 行。
_httpRequest.Method = HttpMethod.Put;
对
_httpRequest.Method = HttpMethod.Patch;
我有 KubernetesClient 代码 运行 我在 K3s Orchestrator 上的应用程序。
我想了解两个 K3s API PatchNamespacedServiceWithHttpMessagesAsync
和 ReplaceNamespacedServiceWithHttpMessagesAsync
[link to these APIs] 之间的区别(用例)。除此之外 link 我找不到任何地方可以阅读有关 K3s API 用例的信息。请在这里帮助我。
PS:
- 基本上我正在尝试更新现有的服务,所以想了解上述两个 API 之间的区别,我将使用更新的补丁主体(更新的服务部署)调用其中任何一个。
- 这个问题是我的
TL;DR
ReplaceNamespacedServiceWithHttpMessagesAsync
使用 PUT HTTP method. PatchNamespacedServiceWithHttpMessagesAsync
use PATCH HTTP 方法。
PUT 方法是更新或创建一个新的对象。如果这样的对象已经存在,则更新所有数据,如果不存在,则根据发送的信息创建一个新对象。 PATCH 方法与 PUT 一样,用于更新有关对象的数据,但它需要对象存在。这是因为它没有在请求中发送完整的数据,而只发送了要更新的数据。
总的来说,这两个 API 彼此非常相似。它们仅在几个地方不同:
我们在第一行有一个不同的名字:
在ReplaceNamespacedServiceWithHttpMessagesAsync
public async Task<HttpOperationResponse<V1Service>> ReplaceNamespacedServiceWithHttpMessagesAsync(
V1Service body,
并在 PatchNamespacedServiceWithHttpMessagesAsync
中:
public async Task<HttpOperationResponse<V1Service>> PatchNamespacedServiceWithHttpMessagesAsync(
V1Patch body,
在PatchNamespacedServiceWithHttpMessagesAsync
bool
bool? force = null,
第 36 行:
tracingParameters.Add("force", force);
ReplaceNamespacedServiceWithHttpMessagesAsync
的第 37 行和 PatchNamespacedServiceWithHttpMessagesAsync
的第 39 行也不同:
ServiceClientTracing.Enter(_invocationId, this, "ReplaceNamespacedService", tracingParameters);
对
ServiceClientTracing.Enter(_invocationId, this, "PatchNamespacedService", tracingParameters);
然后添加片段(从第 56 行到第 59 行)PatchNamespacedServiceWithHttpMessagesAsync
:
if (force != null)
{
_queryParameters.Add(string.Format("force={0}", System.Uri.EscapeDataString(SafeJsonConvert.SerializeObject(force, SerializationSettings).Trim('"'))));
}
最后也是最重要的区别是 ReplaceNamespacedServiceWithHttpMessagesAsync
中的第 65 行和 PatchNamespacedServiceWithHttpMessagesAsync
中的第 71 行。
_httpRequest.Method = HttpMethod.Put;
对
_httpRequest.Method = HttpMethod.Patch;