Expressjs одна функция для обработки GET и POST
Лучше ли иметь отдельную функцию для обработки запросов GET и POST для одной и той же конечной точки API или объединить их в одну функцию, которая различает на основе существования req.body или req.params?
то есть.
app.get('/api/profilepic', api.get_profilepic);
app.post('/api/profilepic', api.change_profilepic);
или же:
app.get('/api/profilepic', api.profilepic);
app.post('/api/profilepic', api.profilepic);
Если последнее, предоставляет ли expressjs вспомогательную функцию для определения типа запроса? Мой подход до сих пор, чтобы определить, является ли req POST, требует подчеркивания:
if (_.size(req.body) == 0)
2 ответа
Лучшая практика - разделять проблемы; поэтому у вас должны быть отдельные функции для обработки каждого HTTP-глагола. Это облегчает поддержку кода.
Нет общего правила, лучший подход зависит от того, над чем вы работаете. Я думаю, что если вы хотите, чтобы конечная точка API принимала запросы POST и GET вместе, вы должны использовать экспресс-функцию all() следующим образом:
app.all('/api/profilepic', api.get_profilepic);
Вы должны использовать отдельные конечные точки для POST и GET, когда функция-обработчик не совпадает.
Для получения дополнительной информации см.: http://expressjs.com/en/guide/routing.html