Детское руководство по вашему первому 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. Мне пришлось заскочить, чтобы сказать ему, что Мэнни очень милый. Он помогает щенку делиться своей ожидающей привлекательностью.
Спасибо, Мэнни.
Пока,
ник