我已经使用 dot net core 3.1 中的测试服务器编写了一个测试,并且我正在尝试向端点发出 PATCH 请求。但是,由于我是使用 PATCH 的新手,所以我有点不知道如何发送端点期望的正确对象。
[Fact]
public async Task Patch()
{
var operations = new List<Operation>
{
new Operation("replace", "entryId", "'attendance ui", 5)
};
var jsonPatchDocument = new JsonPatchDocument(operations, new DefaultContractResolver());
// Act
var content = new StringContent(JsonConvert.SerializeObject(jsonPatchDocument), Encoding.UTF8, "application/json");
var httpResponse = await HttpClient.PatchAsync($"v1/Entry/1", content);
var actual = await httpResponse.Content.ReadAsStringAsync();
}
[HttpPatch("{entryId}")]
public async Task<ActionResult> Patch(int entryId, [FromBody] JsonPatchDocument<EntryModel> patchDocument)
{
if (patchDocument == null)
{
return BadRequest();
}
var existingEntry = _mapper.Map<EntryModel>(await _entryService.Get(entryId));
patchDocument.ApplyTo(existingEntry);
var entry = _mapper.Map<Entry>(existingEntry);
var updatedEntry = _mapper.Map<Entry>(await _entryService.Update(entryId, entry));
return Ok(await updatedEntry.ModelToPayload());
}
在示例中,我创建了一个带有操作列表的 JsonPatchDocument,将其序列化为 JSON,然后使用 HTTP 客户端和端点的 URL 执行 PatchAsync。
所以我的问题是我应该修补的对象的形状是什么,并且我通常正确地执行此操作?
我尝试发送如下图所示的 EntryModel,但是 patchDocument.Operations 有一个空列表。
谢谢,尼克