Как я могу вернуть свой JSON в браузере?

#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 вы можете найти в этой статье.
Экспресс Объяснил с примерами — Установка, маршрутизация, промежуточное программное обеспечение и многое другое