#javascript #node.js
Вопрос:
Я впервые создаю API с использованием узла, но немного застрял на чем-то.
У меня есть следующие файлы:
Мои маршруты, routes/index.js:
const express = require('express');
const router = express.Router();
const transactionsController = require('../controllers/transactionsController');
const ordersController = require('../controllers/ordersController');
const ordersCountController = require('../controllers/ordersCountController');
router.get('/transactions', transactionsController);
router.get('/orders', ordersController);
router.get('/orders_count', ordersCountController);
module.exports = router;
Мои контролеры, controllers/ordersCountController.js:
const ordersCountService = require('../services/ordersCountService');
const ordersCountController = async () => {
try {
const data = await ordersCountService();
console.log(data);
return data;
} catch(err) {
console.log(err);
}
};
module.exports = ordersCountController;
Мой сервис для извлечения из внешнего API, services/ordersCountService.js:
const fetch = require('node-fetch');
const ordersCountService = async () => {
const URL = ....;
const settings = { method: 'Get'};
const res = await fetch(URL, settings);
if (!res.ok) throw new Error('Unable to retrieve data');
return await res.json();
}
module.exports = ordersCountService;
Как я могу передать JSON в браузер?
Я пробовал несколько вещей — вы заметите возвращаемые данные; — но я не могу понять, как вернуть JSON, чтобы он отображался в браузере, когда кто-то посещает ourdomain.com/api/orders_count.
Есть какие-нибудь предложения относительно того, что я здесь делаю не так? Я все еще новичок в JS, так что извините, если я упускаю здесь что-то совершенно очевидное.
Спасибо всем вам за потраченное время. Если я могу что-то добавить для ясности, пожалуйста, не стесняйтесь спрашивать.
Ответ №1:
В вашем контроллере ordersCountService
должно быть 2 параметра: req
и res
:
- Объект req представляет HTTP-запрос и имеет свойства для строки запроса запроса, параметры, тело и заголовки HTTP.
- Объект res представляет HTTP-ответ, который экспресс-приложение отправляет при получении HTTP-запроса.
В этом случае ваш контроллер должен быть:
const ordersCountController = async (req, res) => {
try {
const data = await ordersCountService();
console.log(data);
res.json({data})
} catch(err) {
console.log(err);
}
};
Сохраните его, откройте экспресс-сервер и введите URL-адрес маршрута в браузере, вы увидите формат json.
Более подробную информацию об Express вы можете найти в этой статье.
Экспресс Объяснил с примерами — Установка, маршрутизация, промежуточное программное обеспечение и многое другое