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

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