Я построил простую модель пользователя в BackboneBackbone Модель пользователя с несколькими путями обновления
define([
'underscore',
'backbone'
], function(_, Backbone) {
var UserModel = Backbone.Model.extend({
urlRoot: '/api/user',
idAttribute: '_id',
defaults: {
userName: '',
password: ''
personalDetails: {
title: '',
name: {
firstName: '',
lastName: ''
},
gender: '',
dob: ''
}
}
});
return UserModel;
});
Вызов save()
на модели будет выдавать запрос PUT на /api/user/:id
, который прекрасно.
Однако на переднем конце я хочу 3 формы - updatePersonalDetails
, updateUserName
, updatePassword
.
С моей текущей реализацией все они будут использовать одну и ту же модель и все save()
с той же конечной точкой /api/user/:id
. Моя проблема в том, что я не знаю, какую форму пользователь разместил.
Какое лучшее решение для этой проблемы, хотя и соответствует стандартам RESTful? Имея 3 отдельные модели - UserDetailsModel
, UserPasswordModel
и т. Д.? Или просто сделать объемное ОБНОВЛЕНИЕ на всей модели, независимо от того, какую форму он разместил.
Интересный вопрос, это один из моих личных бифов с REST, как это часто преподносится: мы в основном давая доступ к базе данных вставок, обновлений и удалений через интерфейс HTTP. – mtsr
@mtsr, это плохой общий взгляд на API REST. Вы всегда должны требовать, чтобы пользователь вошел в систему, отправив '401 Unauthorized', если это не так, и затем проверьте их разрешения, отправив' 403 Forbidden', если это так. – gustavohenke
@redeye, я думаю, вам не нужно «знать», какая форма была отправлена в модели. Я считаю, что лучше всего назвать разные методы вашей модели, которые будут запускать сохранение по-разному, только отправляя соответствующие данные. Я не уверен, но я считаю, что это REST-совместимый. – gustavohenke