Я пишу отчет о разработанном мною приложении, которое включает в себя, по моему мнению, REST API на сервере.
Способ, которым приложение разрешает пользователям запрашивать ресурсы из базы данных, заключается в использовании файлов cookie сеанса. Я понимаю, что существует много споров о том, нарушают ли сеансовые куки-файлы на стороне сервера REST, но я не нашел каких-либо конкретных c разъяснений о том, что способ их использования нарушает правила REST.
Я используя структуру узла Express
с пакетом express-session
. Файлы cookie создаются и хранятся через промежуточное ПО, которое сохраняет данные сеанса в моем mongodb
экземпляре с connect-mongodb-session
следующим образом:
app. js
// app.js imports start
const mongoose = require("mongoose");
const session = require("express-session");
const config = require("config");
const MongoDBStore = require("connect-mongodb-session")
// app.js imports end
const mdbStore = new MongoDBStore({
uri: config.get("mongoURI"),
mongooseConnection: mongoose.connection,
collection: "sessions",
ttl: config.get("sessionLife") / 1000,
});
// Session middleware
app.use(
session({
name: config.get("sessionName"),
genid: function () {
return uuid.v4();
},
secret: config.get("sessionKey"),
resave: false,
saveUninitialized: false,
cookie: {
sameSite: true,
httpOnly: true,
maxAge: config.get("sessionLife"),
},
store: mdbStore,
})
);
Это означает, что при поступлении клиентского запроса данные авторизации клиента будут доступны через req.session
, но эти данные поступают из моей базы данных, и нигде не хранятся на сервере.
Таким образом, в конечном итоге это означает, что мой сервер не хранит никаких пользовательских данных напрямую, но зависит от состояния сеанса повара ie, хранящегося в базе данных. Означает ли это, что API не является RESTful?
Я прочитал эту SO-статью и обнаружил лишь небольшое упоминание о файлах cookie, хранящихся в базе данных Действительно ли сеансы нарушают RESTfulness? , но все равно действительно ценим любые комментарии / разъяснения / критику, которые кто-либо имеет. Спасибо