Поиск по сайту:

Создайте API JavaScript за 6 минут


Выразите себя, написав забавный API с помощью Express, минималистской веб-инфраструктуры NodeJS.

В этой статье показано создание базового API с помощью Express и JavaScript. Express — это минималистичный веб-фреймворк NodeJS. Эта комбинация позволяет с минимальными усилиями запустить API и запустить его со скоростью света. Если у вас есть шесть минут свободного времени, вы можете заставить этот API работать и делать что-нибудь полезное.

Начните работу с NodeJS

Для этого проекта вам понадобится версия NodeJS по вашему выбору. В этом примере я использую NodeJS и HTTPie для тестирования, веб-браузер и терминал. Как только они у вас появятся, вы готовы начать. Давайте отправим это шоу в путь!

Настройте каталог проекта и установите инструменты, чтобы начать работу:

$ mkdir test-api

Команда npm init создает пакет JSON для нашего проекта ниже. Введите npm init и несколько раз нажмите Enter. Результат показан ниже:

$ npm init

Press ^C at any time to quit.
package name: (test-api)
version: (1.0.0)
description:
entry point: (index.js)
test command:
git repository:
keywords:
author:
license: (ISC)
About to write to /Users/cherrybomb/test-api/package.json:

{
  "name": "test-api",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC"
}


Is this OK? (yes)

Эта утилита поможет вам создать файл package.json. Он охватывает только наиболее распространенные элементы и пытается угадать разумные значения по умолчанию. См. npm help init для получения подробной документации по этим полям и тому, что именно они делают.

После этого используйте npm install {pkg, чтобы установить пакет и сохранить его как зависимость в файле package.json.

Затем установите Express с помощью интерфейса командной строки npm:

$ npm install express

npm WARN cherrybomb No description
npm WARN cherrybomb No repository field.
npm WARN cherrybomb No license field.

+ express@4.18.1
added 60 packages from 39 contributors and audited 136 packages in 4.863s

16 packages are looking for funding
  run `npm fund` for details

found 0 vulnerabilities

Наконец, создайте исходный каталог и файл index.js, в котором находится код приложения:

$ mkdir src
$ touch src/index.js

Время кодировать!

Напишите код API

Для первого этапа написания кода выполните простой вызов API «Hello World». В файл index.js добавьте приведенный ниже фрагмент кода:

const express = require('express')
const app = express()
const port = 5000

app.get('/', (req, res) => {
  res.send('Hello World!')
})

app.listen(port, () => {
  console.log(`Example app listening on port ${port}`)
})

Каждая из этих постоянных переменных доступна в указанных ниже областях. Поскольку вы не используете в коде следующие области, эти константы используются без особых размышлений.

Когда вы вызываете app.get, вы определяете конечную точку GET{rest Article Need для косой черты. Это также устанавливает ответ «привет, мир».

Наконец, в последнем разделе вы запустите свое приложение на порту 5000. Вывод на вашем терминале показывает определенное вами сообщение в файле с именем console.log.

Чтобы запустить приложение, выполните следующую команду и посмотрите вывод, как показано:

$ node ./src/index.js
Example app listening on port 5000

Проверьте API

Теперь, когда все готово и работает, сделайте простой вызов, чтобы убедиться, что ваш API работает. Для первого теста просто откройте окно браузера и перейдите по адресу localhost:5000.

(Джессика Черри, CC BY-SA 4.0)

Далее посмотрите, что говорит HTTPie о вызове API:

HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 12
Content-Type: text/html; charset=utf-8
Date: Tue, 21 Jun 2022 14:31:06 GMT
ETag: W/"c-Lve95gjOVATpfV8EL5X4nxwjKHE"
Keep-Alive: timeout=5
X-Powered-By: Express

Hello World!

И вот оно! Один целый рабочий вызов API. Ну и что дальше? Ну, вы могли бы попробовать внести некоторые изменения, чтобы сделать его более интересным.

Сделайте свой API интересным

Часть «Привет, мир» готова, так что пришло время заняться крутой математикой. Вместо простого «привет, мир», вы будете считать несколько слов.

Измените свой код, чтобы он выглядел так:

const express = require('express')
const app = express()
const port = 5000

let count = 0;

app.get('/api', (req, res) => {
res.json({count})
})

app.post('/api', (req, res) => {
++count;
res.json({count});
});

app.listen(port, () => {
console.log(`Example app listening on port ${port}`)
})

Помимо команды GET в вашем коде, теперь у вас есть POST для внесения некоторых изменений в счетчик. Если счетчик задан как 0, команда LET позволяет изменять переменную COUNT.

В app.get вы получаете счетчик, а в app.post++count, который отсчитывается вверх с шагом 1. При повторном запуске GET вы получаете новый номер.

Попробуйте изменения:

test-api → node ./src/index.js
Example app listening on port 5000

Затем используйте HTTPie для запуска операций GET и POST для проверки работоспособности. Начиная с GET, вы можете получить счетчик:

test-api → http GET 127.0.0.1:5000/api
HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 11
Content-Type: application/json; charset=utf-8
Date: Tue, 21 Jun 2022 15:23:06 GMT
ETag: W/"b-ch7MNww9+xUYoTgutbGr6VU0GaU"
Keep-Alive: timeout=5
X-Powered-By: Express

{
    "count": 0
}

Затем выполните POST пару раз и посмотрите изменения:

test-api → http POST 127.0.0.1:5000/api
HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 11
Content-Type: application/json; charset=utf-8
Date: Tue, 21 Jun 2022 15:28:28 GMT
ETag: W/"b-qA97yBec1rrOyf2eVsYdWwFPOso"
Keep-Alive: timeout=5
X-Powered-By: Express

{
    "count": 1
}


test-api → http POST 127.0.0.1:5000/api
HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 11
Content-Type: application/json; charset=utf-8
Date: Tue, 21 Jun 2022 15:28:34 GMT
ETag: W/"b-hRuIfkAGnfwKvpTzajm4bAWdKxE"
Keep-Alive: timeout=5
X-Powered-By: Express

{
    "count": 2
}

Как видите, счет растет! Запустите еще одну операцию GET и посмотрите, что получится:

test-api → http GET 127.0.0.1:5000/api
HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 11
Content-Type: application/json; charset=utf-8
Date: Tue, 21 Jun 2022 15:29:41 GMT
ETag: W/"b-hRuIfkAGnfwKvpTzajm4bAWdKxE"
Keep-Alive: timeout=5
X-Powered-By: Express

{
    "count": 2
}

Конец и начало

Я специализируюсь на инфраструктуре и Terraform, так что это был действительно интересный способ выучить и быстро создать что-то на языке, который я никогда раньше не использовал. JavaScript развивается быстро, и ошибки, которые кажутся непонятными или непонятными, могут раздражать. Я понимаю, что некоторые личные мнения резко осуждают его как язык, но это сильный и полезный инструмент. Надеюсь, вам понравилось это прохождение и вы узнали что-то новое и интересное.

Статьи по данной тематике: