Как правильно обрабатывать мою маршрутизацию для REST API

Извиняюсь, если это вопрос новичка. Как мне структурировать свой 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.

Вам следует взглянуть на Express 4.x Справочник по API. Это очень просто для понимания и хорошо объяснено, в вашем случае этот раздел развеет ваши сомнения: expressjs.com/en/4x/api.html#req

David Corral 20.03.2019 10:17

Во-первых, большое спасибо за ответ на мой вопрос. Моя главная забота больше о том, как это должно быть сделано, и о следовании Hateoas, поскольку я все еще пытаюсь изучить и освоить структуру REST API. Я обязательно посмотрю документацию по ExpressJS. restfulapi.net/hateoas .

YourfavOreo 20.03.2019 10:21
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
2
34
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
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.

Во-первых, большое спасибо, что нашли время ответить на мой вопрос. Таким образом, правильный подход состоит в том, чтобы разбить свойства на их собственные конкретные существительные и настроить там их функции по мере необходимости?

YourfavOreo 20.03.2019 10:13

Да! Если кто-то скажет мне сделать такую ​​​​функциональность, я сделаю, как указано выше.

narayansharma91 20.03.2019 10:14

Не существует конкретных правил/постановлений, основанных на вас, что будет легко для вас.

narayansharma91 20.03.2019 10:15

Я обновил свой ответ, пожалуйста, проверьте, это может вам помочь.

narayansharma91 20.03.2019 10:27

Другие вопросы по теме