Извиняюсь, если это вопрос новичка. Как мне структурировать свой REST API (я использую Node & Express).
const mongoose = require('mongoose');
const recipeSchema = mongoose.Schema({
_id: mongoose.Schema.Types.ObjectId,
name: {
type: String,
required: true
},
author: {
type: mongoose.Schema.Types.ObjectId,
ref: 'UserData',
required: true
},
description: String,
ingredients: [String],
steps: [String],
bookmarkNumber: Number,
likeNumber: Number,
rating: Number
})
module.exports = mongoose.model('Recipe', recipeSchema);
Хотя я понимаю, что могу использовать следующее для более масштабных функций, таких как создание рецептов, удаление рецептов и т. д.
router.get('/', (req, res, next) => {
// Get Recipes
});
router.post('/',checkAuth, (req, res, next) => {
// Create Recipe
});
router.get('/:recipeID', (req, res, next) => {
// Get Specific Recipe
});
Однако в настоящее время я застрял в том, как обращаться с внутренними деталями или конкретными ресурсами. Например: Допустим, я хотел бы добавить шаг к рецепту. Будет ли этот конкретный экземпляр тем, где я могу поставить глагол или ? Моя текущая идея состоит в том, чтобы:
router.post('/:recipeID/steps',checkAuth, (req, res, next) => {
// Add Steps to recipeID if it exists
});
поэтому, чтобы в основном добавить URL-адреса для свойств и обрабатывать их таким образом, поскольку глаголы, по-видимому, являются грехом REST API.
Во-первых, большое спасибо за ответ на мой вопрос. Моя главная забота больше о том, как это должно быть сделано, и о следовании Hateoas, поскольку я все еще пытаюсь изучить и освоить структуру REST API. Я обязательно посмотрю документацию по ExpressJS. restfulapi.net/hateoas .



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


router.post('/:recipeID/:steps',checkAuth, (req, res, next) => {
if (req.params.steps === 'first') {//based on your requirements
} else if (condition) {
}
});
Однако есть несколько остальных правил API для разных действий.
GET /users: чтобы получить список пользователей.GET /users/:userid : чтобы получить информацию для конкретного пользователя.POST /users: создать пользователя.PUT /users для обновления конкретной информации о пользователе.Это может помочь вам понять наилучший подход к разработке конечных точек API.
Во-первых, большое спасибо, что нашли время ответить на мой вопрос. Таким образом, правильный подход состоит в том, чтобы разбить свойства на их собственные конкретные существительные и настроить там их функции по мере необходимости?
Да! Если кто-то скажет мне сделать такую функциональность, я сделаю, как указано выше.
Не существует конкретных правил/постановлений, основанных на вас, что будет легко для вас.
Я обновил свой ответ, пожалуйста, проверьте, это может вам помочь.
Вам следует взглянуть на
Express 4.xСправочник по API. Это очень просто для понимания и хорошо объяснено, в вашем случае этот раздел развеет ваши сомнения: expressjs.com/en/4x/api.html#req