Детское руководство по вашему первому API на базе Node.

Как выпускник Flatiron School, получившего рейтинг №1 и который, возможно, скоро не станет, я прошел обучение на инженера полного цикла, а это означало, что я смог создать как фронт -end, с которым пользователь будет взаимодействовать, когда они зайдут на сайт, а также back-end (источник бесчисленных шуток для меня, бывшего комика), который является сервером / базой данных, который обрабатывает все различные виды использования веб-сайт, созданный разными людьми, хранит их данные и передает данные веб-сайту.

Например, Facebook знает, кто ваши друзья и чем они занимаются, и может предоставить вам эту информацию: вы «входите в систему» ​​на их сервере, и он заполняет интерфейсный веб-сайт специфичными для вас данными. Их «интерфейс» никогда не меняется, но информация, которую вы видите, отличается.

Я изучил интерфейсную языковую среду JavaScript / React / Redux, и это здорово. React - чрезвычайно популярный фреймворк, и хотя несколько троллей могут посоветовать вам перейти на Vue, React по-прежнему занимает первое место в США. React выглядит так.

Конечно, у нас здесь есть причудливый синтаксис и некоторые API-интерфейсы браузера, такие как «fetch» ​​(вы, ребята, знали, что он не работает в Node?), Но, по сути, у нас здесь есть JavaScript с массивами, классами, объектами, работами.

Однако внутренний язык, который я изучил для создания своего сервера, выглядит совсем иначе. Это Ruby on Rails.

Я не думаю, что это вообще плохо. Ruby - прекрасный язык! Он наполнен мощными инструментами, которые могут использовать люди с небольшим опытом. Ошибки, которые он выдает, удивительны, интерактивны, говорят вам, где у вас возникла проблема, а затем помогают вам попытаться ее решить. Сам Rails, веб-фреймворк для Ruby, даже лучше справляется с ошибками, чем Ruby! Еще проще в использовании. Сделать API довольно просто.

rails new example-project --api 
cd example-project
rails g resource user name password
rails g resource jokes content user:belongs_to
rails db:create && rails db:migrate

И тогда вы почти закончили.

Конечно, вы должны написать, что вы хотите, чтобы он делал в случае RESTful-действий, таких как GET, PATCH, POST, но вы записываете их в контроллерах, которые выглядят почти так же, как то, что я показал выше, и файлы в основном были уже сделано для вас!

Я считаю, что Ruby великолепен и синтаксически похож на Python, более популярный серверный язык, но при этом его значительно легче изучать.

Но я хотел сделать что-то похожее на мой интерфейс! И вот тут я узнал про Экспресс!

Предполагается, что вы знакомы с Node, а если нет, то можете посмотреть мою предыдущую статью или веб-сайт Node.

Но создать API с помощью Express действительно довольно просто, хотя это не так просто, как Rails (который был разработан, чтобы быть «самоуверенным» или «это то, как мы думаем, что все должно быть сделано, и здесь много бесплатного контента. что идет с этим »по сравнению с« невнимательным »или« делай что угодно, как хочешь, но тебе нужно писать больше! »).

Давайте рассмотрим несколько простых команд, снова предполагая, что у вас установлены Node и Диспетчер пакетов узлов (NPM).

mkdir express-testing-not-clothes
cd express-testing-not-clothes
npm init --y
npm install express
touch this-is-not-a-clothing-website.js

Все это настроит ваш экспресс-опыт, а флаг --y просто создает для вас файл «package.json» по умолчанию, который в основном представляет собой информацию и сценарии для вашего проекта.

Для начала нам понадобится всего несколько строк кода в вашем новом файле!

//this-is-not-a-clothing-website.js
const express = require('express')
const app = express()
app.get('/', (req, res) => {
  res.send("I'm sorry, human. But this is not your fancy store.")
})
app.listen(3000, () => console.log('The store is open!'))

Теперь мы можем немного разобрать это.

const express = require('express')

Это просто синтаксис Node для включения чужого кода! Поскольку мы уже сделали «npm install express» и «npm init», теперь мы можем включить Express в наше приложение.

const app = express()

Говоря об этой функции Express, которую мы включаем, оказывается, что это функция, и просто вызывая ее, мы получаем целое приложение!

app.get('/', (req, res) => {
  res.send("I'm sorry, human. But this is not your fancy store.")
})

Это маршрут, который имитирует цикл HTTP-запроса / ответа!

Обычно при получении базового URL или «/» он говорит «отправить» ответ или «res», которое в данном случае является строкой или, выражаясь непрофессиональным языком, просто набором слов.

app.listen(3000, () => console.log('The store is open!'))

Здесь мы говорим нашему приложению прослушивать порт, например 3000. Если бы мы развертывали это, мы могли бы абстрагировать это до чего-то вроде:

const port = process.env.PORT || 3000

Это просто говорит о том, что если есть порт, указанный службой типа Heroku, который вы можете развертывать, используйте его или, если он не существует, используйте 3000, и тогда эта строка будет выглядеть примерно так.

app.listen(port, () => console.log('The store is open!'))

Теперь мой экспресс-сервер почти готов!

Я ввожу в свой терминал команду:

node this-is-not-a-clothing-website.js

Я захожу на «http: // localhost: 3000» и вижу:

Но ждать! Вот БОНУС!

А как насчет JSON? Это нотация объектов JavaScript! Это самый популярный способ запуска API и то, как тонны внутренних серверов общаются со своими интерфейсами!

Так что давайте немного подправим сами!

const express = require('express')
const app = express()
app.use(express.json())
app.get('/', (req, res) => {
  res.send({
    message: "I'm sorry, human. But this is not your fancy store.",
    thisIsAClothingStore: false,
    costOfADressAtExpressInDollars: 88,
    expressIsSlightlyOverPriced: ["true", "but so are many stores", "slave labor, bruh"]
  })
})
app.listen(3000, () => console.log('The store is open!'))

Здесь вы можете увидеть несколько изменений, включая некоторое «промежуточное ПО» или код, который изменяет способ работы нашего приложения, в данном случае «app.use (express.json ())» теперь мы можем обслуживать объект JSON с этим get запрос!

У нас есть все виды данных, включая число, строку, логическое значение и даже массив! И все это всего из нескольких строк кода.

И это только верхушка айсберга с Express. Вы можете использовать Mongoose и MongoDB для создания REST API с базой данных! Вы можете использовать Sequelize для создания собственной базы данных MySQL! Вы даже можете сделать классный веб-скрейпинг или агрегировать вызовы ДРУГИХ API для обслуживания пользовательских данных.

Вот готовый код для всех, кто этого хочет!

В любом случае, я надеюсь, что этот материал был полезен, и если нет, могу я познакомить вас с кем-то, кто им будет: Мэнни.

Мэнни покорно ждал своего хозяина возле 7–11. Мне пришлось заскочить, чтобы сказать ему, что Мэнни очень милый. Он помогает щенку делиться своей ожидающей привлекательностью.

Спасибо, Мэнни.

Пока,

ник