2014-09-03 2 views
0

Я разрабатываю ASP.NET Web Api с последними версиями sdk, .NET Framework 4.5.1 и C#.Поместите все свойства или только те свойства, которые я собираюсь обновить?

У меня есть этот метод поставить на ApiController:

public void Put(HttpRequestMessage request, int userId, User user) 
{ 
} 

Если User имеет много свойств, как имя, дата рождения, адрес, страна и т.д. И я хочу, чтобы обновить только его/ее адрес.

Что мне нужно отправить с клиента на веб-сайт Api? Пользовательский экземпляр только с его именем?

Это пример JSON: {"UserAddress":"Ugly street, 1"}.

Но, может быть, я не могу этого сделать, потому что некоторые из Users свойств не может быть пустым (как его/ее возраста, потому что это int Age { get; set; }.

Вместо того, чтобы положить User экземпляр, я мог бы послать . все свойства, которые я буду обновлять в Url, но я думаю, что это может быть беспорядок

+0

Для этого вы можете сделать две вещи. сначала - сделайте все свои свойства нулевыми. ИЛИ второй вариант - в конструкторе вашей модели присвойте значение по умолчанию всем свойствам в соответствии с их типом данных. Затем вы можете передать json так: '{" UserAddress ":" Ugly street, 1 "}' –

+0

@KrishnrajRana Спасибо за ваш комментарий. Я думал, чтобы все свойства были обнуляемы, но я задал этот вопрос, чтобы увидеть, есть ли лучший подход. – VansFannel

+0

В одном из наших проектов мы использовали второй подход к нашей службе wcf, который использовался командой iPhone. –

ответ

1

В семантике PUT указано, что вы должны указать полное текущее состояние ресурса. Если вы не хотите этого делать, вы должны использовать POST или PATCH для обновления вашего ресурса.

0

Я хотел бы сделать это:

public class AddressController : ApiController 
{ 
    [Route("users/userId/address")] 
    public void Put(int userId, Address address) 
    { 

    } 
} 
+0

Спасибо за ваш ответ, но если класс 'User' имеет двадцать свойств, мне нужно сделать это для каждого из них? – VansFannel

0

Я думаю, что лучший подход, чтобы получить User из Web Api, обновите свойства на нем и поместите его в Web Api.

Шаги:

  1. получить User с веб-Апи.
  2. Обновить, что User с новыми свойствами.
  3. Положите это User в Web Api.

Это более общее решение. Здесь мы можем изменить одно или несколько свойств, и нам не нужно добавлять метод для каждого свойства и без необходимости иметь свойства NULL.

Смежные вопросы