Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Node.js
Code

Створюємо наш перший API за допомогою Node.js та Express: Створюємо сервер

by
Difficulty:BeginnerLength:MediumLanguages:
This post is part of a series called Code Your First API With Node.js and Express.
Code Your First API With Node.js and Express: Understanding REST APIs
Code Your First API With Node.js and Express: Connect a Database

Ukrainian (українська мова) translation by AlexBioJS (you can also view the original English article)

Створення сервера Express для API за допомогою Node.js

У попередньому посібнику ми розглянули, що собою являє архітектура REST, шість головних вимог, що висуваються до REST, значення методів запиту HTTP та кодів стану відповідей та структуру кінцевої точки RESTful API.

У цьому посібнику ми створимо сервер, на якому буде розташовуватися наш API. Ви можете створювати API за допомогою будь-якої мови програмування та будь-якого серверного програмного забезпечення, проте ми будемо використовувати платформу Node.js, що є реалізацією JavaScript для сторони сервера, і Express – популярний фреймворк для Node.js з самим потрібним функціоналом.

Встановлення

Для початку потрібно впевнитися, що Node.js та npm встановлено глобально на нашому комп'ютері. Ми можемо це перевірити за допомогою виконання команди з прапорцем -v, у результаті чого буде показано встановлені версії цих інструментів. Відкрийте вашу консоль та введіть туди наступну команду:

Версії, встановлені на вашому комп'ютері, можуть трохи відрізнятися від тих, що встановлено у мене, проте якщо обидва інструменти встановлено, то можемо приступати.

Давайте створимо папку проекту під назвою express-api та перейдемо до неї.

Тепер, коли ми у ній, ми можемо ініціалізувати наш проект, виконавши команду init.

У результаті вам буде запропоновано ряд питань про проект, на які ви можете як відповідати, так і ні. Після налаштування у вас буде файл package.json, який виглядає наступним чином:

Тепер, коли ми маємо package.json, ми можемо встановити залежності, потрібні для нашого проекту. На щастя, нам потрібні тільки наступні:

  • body-parser – ПЗ проміжного шару для розбору тіла запитів;
  • express – веб-фреймворк з самим потрібним функціоналом, який ми будемо використовувати для створення нашого сервера;
  • mysql – драйвер MySQL;
  • request (необов'язковий) – легкий спосіб виконання запитів HTTP;

Ми скористаємося командою install, за якою будуть слідкувати всі залежності, для завершення налаштування нашого проекту.

У результаті буде створено файл package-lock.json, папку node_modules, і package.json тепер буде виглядати наступним чином:

Створення сервера HTTP

Перед тим як створити сервер Express, ми швиденько створимо сервер HTTP за допомогою вбудованого модуля http Node, щоб ви отримали загальне уявлення про те, як працює простенький сервер.

Створіть файл під назвою hello-server.js. Завантажте модуль http, встановіть значення порту (я вибрала 3001) та створіть сервер за допомогою методу createServer().

У вступному посібнику цієї серії ми розглянули, яку роль виконують запити та відповіді для сервера HTTP. Ми налаштуємо наш сервер таким чином, щоб він міг оброблювати запит та відображувати його URL-адресу на стороні сервера, а також так, щоб на стороні клієнта відображалося повідомлення «Hello, server!».

Нарешті, ми вкажемо серверу, який порт прослуховувати та будемо виводити помилки при їх наявності.

Тепер ми можемо запустити наш сервер за допомогою команди node, за якої йде ім'я файлу.

Ви побачите відповідь у консолі.

Для того щоб перевірити, чи дійсно запустився сервер, перейдіть у вашому браузері за адресою https://localhost:3001/. Якщо все нормально, то ви побачите «Hello, server!» на сторінці. У нашій консолі ви побачите запитану URL-адресу.

Якщо би ви перейшли за адресою http://localhost:3001/hello, то побачили би URL: /hello.

Також ми можемо використовувати інструмент cURL на нашому локальному сервері, завдяки чому нам будуть показані точні повернуті заголовки та тіло відповіді.

Якщо ви закриєте консоль, коли захочете, то сервер перестане працювати.

Тепер, коли ми отримали загальне уявлення про те, як працює сервер, запит та відповідь разом, ми можемо переписати цей код для Express, інтерфейс якого ще простіший та можливості якого більш широкі.

Створюємо сервер Express

Ми створимо новий файл, app.js, який буде виступати у ролі точки входу  (* файл для запуску застосування) для власне нашого проекту. Таким же чином як і у випадку з оригінальним сервером http, ми запитаємо модуль та вкажемо порт для запуску сервера.

Створіть файл app.js та додайте туди наступний код:

Тепер, замість того щоб прослуховувати всі запити, ми явно вкажемо серверу, що нам потрібні тільки запити, виконані за методом GET до кореневої папки сервера (/). При отриманні кінцевою точкою запиту «/» ми відобразимо запитану URL-адресу та виведемо повідомлення «Hello, Server!».

Нарешті, ми запустимо сервер, який буде прослуховувати запити, виконані за 3002 портом, за допомогою методу listen().

Ми можемо запустити сервер за допомогою команди node app.js як раніше, проте ми можемо змінити властивість scripts у файлі package.json для автоматичного запуску цієї конкретної команди.

Тепер ми можемо використовувати команду npm start для запуску сервера, і після запуску ми побачимо повідомлення у консолі.

Якщо ми виконаємо команду curl -i для обговорюваної URL-адреси, то побачимо, що сервер у цьому випадку працює на базі Express і що є деякі додаткові заголовки на зразок Content-Type.

Додаємо ПЗ проміжного шару для розбору тіла запитів

Для того щоб полегшити роботу з запитами за методами POST та PUT до нашого API, ми додамо ПЗ проміжного шару для розбору тіла запиту. Тут нам і стає у пригоді модуль body-parser. Завдяки цьому модулю буде витягнуто все тіло надійшовшого  запиту, а його дані перетворено у JSON-об'єкт, з яким ми можемо працювати.

Ми просто запитаємо модуль у верхній частині коду нашого файлу. Додайте наступну інструкцію require у верхню частину вашого файлу app.js.

Потім ми вкажемо нашому додатку Express, що потрібно використовувати body-parser та перетворювати дані у формат JSON.

Також давайте змінимо наше повідомлення таким чином, щоб замість простого тексту в якості відповіді відправлявся JSON-об'єкт.

Далі йде код нашого файлу app.json, що маємо на цей час:

Якщо ви відправите запит за допомогою curl -i на сервер, то ви побачите, що у заголовку Content-Type тепер вказано значення application/json; charset=utf-8.

Налаштовуємо маршрути

Поки ми маємо тільки маршрут для оброблення запитів за методом GET до кореня додатка (/), проте наш API також повинен бути спроможним оброблювати запити HTTP за всіма методами до різних URL. Ми налаштуємо маршрутизатор (* надає функціональні можливості для оброблення відповідей) та додамо деякі вигадані дані для відправлення користувачеві.

Давайте створимо нову папку під назвою routes та файл routes.js. Ми підключимо його у верхній частині app.js.

Зверніть увагу на те, що розширення .js у require вказувати необов'язково. Тепер ми перемістимо маршрут для оброблення запитів GET у routes.js. Додайте наступний код у routes.js:

Нарешті, експортуйте маршрутизатор, щоб ми могли їм скористатися у нашому файлі app.js

В app.js замініть наявний код app.get() викликом routes():

Тепер ви могли би перейти за http://localhost:3002 та побачити те саме, що й раніше. (Не забудьте перезапустити сервер)

Після вдалого налаштування вищезазначеного ми надамо деякі дані у форматі JSON за допомогою іншого маршруту. Поки що ми скористаємося просто вигаданими даними, оскільки нашу база даних ще не створено.

Давайте створимо змінну users у routes.js з деякими вигаданими користувальницькими даними у форматі JSON.

Ми додамо ще один маршруту для оброблення запитів за адресою /users та методом GET до нашого маршрутизатора та будемо відправляти з його допомогою користувацькі дані.

Після перезапуску сервера тепер ви можете перейти за http://localhost:3002/users та побачити всі наші дані.

Зверніть увагу: якщо у вас не встановлено у браузері розширення для перегляду файлів у форматі JSON, то я вам дуже рекомендую завантажити його, наприклад JSONView для Chrome. Завдяки цьому вам буде набагато простіше читати дані!

Відвідайте репозиторій GitHub, щоб ознайомитися з кінцевим кодом для цього поста та порівняйте його зі своїм.

Завершення

У цьому посібнику ми розглянули, як створити сервер за допомогою вбудованого модуля Node HTTP та за допомогою Express, як назначити маршрути для запитів, виконуваних за різними URL-адресами, і як отримати надійшовші у запитах за методом GET дані у форматі JSON.

В останньому посібнику цієї серії ми підключимо наш сервер Express до MySQL для створення, перегляду, оновлення та видалення користувачів з нашої бази даних, завершуючи реалізацію функціональних можливостей нашого API.

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.