在ASP.NET Core中,Web API默认不支持HTTP动词中的PATCH方法。但是,我们可以通过自定义路由和动作筛选器来实现对PATCH方法的支持。
以下是一个示例解决方案:
using Microsoft.AspNetCore.Mvc.Routing;
namespace YourNamespace
{
public class HttpPatchAttribute : HttpMethodAttribute
{
private static readonly string[] _supportedMethods = { "PATCH" };
public HttpPatchAttribute() : base(_supportedMethods) { }
}
}
using Microsoft.AspNetCore.Mvc;
namespace YourNamespace.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class YourController : ControllerBase
{
[HttpPatch("{id}")]
public IActionResult Update(int id, [FromBody] YourModel model)
{
// 执行更新操作
return Ok();
}
}
}
services.AddMvc(options =>
{
options.Filters.Add(new HttpPatchAttribute());
}).SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
现在,你可以使用PATCH方法调用Web API的Update动作了。
注意:在使用PATCH方法时,请求的Content-Type必须为application/json,并且请求的主体中必须包含有效的JSON数据。
希望这个解决方案对你有帮助!