У меня есть проект Web Api и в настоящее время обновление объекта выполняется через POST. Создание объекта также выполняется с помощью одного метода POST, и я реализую его, проверяя, отправил ли пользователь мне идентификатор объекта, а затем реализует обновление, а не создание.Самый простой способ реализовать метод API PUT для обновления объекта
Это плохо подходит для многих очевидных причин. Это также запутывает с точки зрения клиента и делает весь метод медленным и трудным для определения.
Так что я расщепление обновления в метод PUT, и я хочу, чтобы это было вот так (псевдо код)
public string PUT(MyModel model){
//Check if model Id is sent. return if not.
//Check what other fields have been sent.
//Update only those fields using EF and save.
}
Я бы реализовать как:
var toUpdate = context.MyModels.FirstOrDefault(x => x.Id == model.Id);
if(toUpdate == default(MyModel)){ //Return error to client }
if(model.first != null){ toUpdate.first = model.first; }
//Repeat for every field.
context.MyModels.AddOrUpdate();
context.SaveChanges();
Как я new для создания API API Я задался вопросом, является ли это стандартом для создания методов обновления PUT. Это может быть закрыто как основанное на мнении, но я хотел бы знать, хорошо ли эта реализация, поскольку у меня не было никакого руководства по созданию этого API.
Проверьте, как вы можете использовать 'Delta' в 'Web Api'. Я надеюсь, что [эта статья] (http://www.strathweb.com/2013/01/easy-asp-net-web-api-resource-updates-with-delta/) поможет вам начать работу и дать вам представление как вы можете использовать 'Delta ' с помощью метода 'PUT'. –
Michael
@Michael Спасибо, это действительно интересно. Любопытно, каковы причины метода патча, когда в моем методе PUT выше может обновляться с частичной модели? Это просто соглашение или есть нечто более конкретное? – JonnyKnottsvill