Моя позиция по проектированию WebAPI следующая:
- API должно быть простым и понятным, тупым
- API должно быть единообразным
- API нужно стараться делать REST настолько, насколько это возможно, оставаясь в рамках здравого смысла
- Сущности в API должны быть обогащенными (полными), чтобы не было необходимости делать дополнительные запросы к API. Никаких полей по типу
entityId
, толькоentity:{Id:1,Name:'111'}
. Обогащать тоже нужно в рамках разумного, в большинстве случаев достаточно Id, Name - API не должно зависеть от технических нюансов реализации, что на клиенте, что на сервере. Все сложности - это проблема реализации, а не протокола.
- На вход API отправляется та же структура сущностей, что даёт API на выход. Значения, которые не менялись, не должны считаться внесенным изменением.
- Отсутствующие в принципе значения должны всегда иметь значение null. Поле при этом не должно пропадать, т.к. структура сущности та же
- Сервер должен возвращать читаемые человеком ошибки.