我使用 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对象,并使用一系列操作对其进行序列化,然后使用HTTP Client和端点URL执行PatchAsync方法。
我的问题是:我应该对什么样的对象进行Patch操作?我是否正确地执行了这个过程?
我尝试像下面图片中所示发送EntryModel对象,但是patchDocument.Operations返回为空列表。
谢谢, Nick