Представляем вызов #WebDevSampler

Существует множество языков программирования, которые вы можете использовать для создания сервера вашего веб-приложения, но независимо от того, какой из них вы используете, есть основные концепции, которые вам всегда нужно знать. К ним относятся такие вещи, как маршрутизация, безопасность, взаимодействие с базами данных, сериализация в форматы, такие как JSON, и HTTP.

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

Поэтому для того, чтобы опробовать стек веб-разработки на новом языке, понять, нравится ли он мне, и получить отзывы о паттернах реализации, я пробую нечто под названием #WebDevSampler — это набор упражнений для начала веб-разработки на новом языке программирования. Идея задачи заключается в следующем:

  • #WebDevSampler предполагает, что вы знаете основы языка, такие как итерация, функции, типы данных, компиляция/запуск программы.
    • Девятое упражнение предполагает, что вы знакомы с использованием HTTP-клиента, такого как cURL, httpie или Postman, для отправки полезной нагрузки JSON на конечную точку HTTP.
    • Последние два упражнения, посвященные базам данных, предполагают знакомство с общением хотя бы с одним видом баз данных. Но я оставил неясным, какую базу данных использовать, так что вы можете использовать ту, которая вам больше нравится. В своем примере я использую SQLite.
  • Каждое упражнение должно быть относительно простым, чтобы изменения кода, которые оно влечет за собой, могли продемонстрировать концепцию.
  • Каждое упражнение опирается друг на друга, поэтому их следует выполнять по порядку.
  • В любом упражнении то, что вы используете для решения проблемы, зависит от вас, поэтому то, что вы создаете в упражнении, намеренно расплывчато. Вы можете использовать только стандартную библиотеку языка, или вы можете использовать зависимости, такие как библиотеки, микрофреймворки и даже большие фреймворки (но я лично не стал бы начинать изучение нового языка с большого Rails-подобного фреймворка для этого языка, если вы не знаете, что хотите использовать этот фреймворк в работе).
    • На самом деле, вам рекомендуется попробовать инструменты на вашем языке и сравнить их, чтобы увидеть, какие из них вам больше нравятся, и узнать, какие инструменты обычно используются на работе в сообществе веб-разработчиков вашего языка. Также рекомендуется попробовать установить хотя бы одну зависимость, чтобы увидеть, как работает управление пакетами в языке.
  • Хотите провести другие эксперименты со своим кодом, которые не входят в упражнения? Тогда вам стоит это сделать! Идти по проторенному пути — отличный способ узнать больше нового, а в работе веб-разработчика вы делаете многое из этого!

Упражнения следующие:

  • (1) Запустить и запустить HTTP-сервер, обслуживающий конечную точку, которая дает HTTP-ответ с сообщением типа «hello world!».
    • Демонстрируется концепция: запуск HTTP-сервера и обработка HTTP-запроса.
  • (2) Передайте HTTP-ответ в виде HTML с Content-Type text/html.
    • Демонстрация концепции: редактирование HTTP-ответа с помощью заголовков ответа.
  • (3) Добавление другой конечной точки/маршрута на вашем HTTP-сервере, например, страницы /about.html.
    • Демонстрация концепции: обслуживание более чем одной конечной точки HTTP
  • (4) Обслуживание конечной точки с помощью изображения или веб-страницы в вашей файловой системе
    • Демонстрация концепции: обслуживание содержимого из файловой системы
  • (5) Маршрутизация к конечным точкам с использованием более сложных маршрутов, таких как /signup/my-name-is/:name, например, если я пошлю запрос на /signup/my-name-is/Andy, я получу ответ «Вы все записались на большой съезд Энди!».
    • Концепция продемонстрирована: Параметризированная маршрутизация
  • (6) Напишите и запустите автоматизированный тест для конечной точки HTTP с параметрами
    • Демонстрация концепции: Автоматизированное тестирование с конечной точкой HTTP в одном из инструментов CLI для тестирования вашего языка.
  • (7) Эскейпируйте HTML-теги в вашей конечной точке. Например, /signup/my-name-is/<i>Andy должен быть санирован, чтобы не отображать ваше имя курсивом.
    • Демонстрируемая концепция: Базовая санация ввода
  • (8) Сериализация объекта/структуры/класса в некоторый JSON и передача его на конечную точку с Content-Type: application/json.
    • Демонстрируемая концепция: Сериализация JSON, которая часто используется при создании бэкенд API.
  • (9) Добавить конечную точку POST HTTP, чей вход имеет Content-Type application/json, десериализовать его в объект/структуру/класс, а затем использовать некоторую часть объекта для создания некоторой части HTTP-ответа.
    • Демонстрируемая концепция: десериализация JSON
  • (10) Теперь попросите конечную точку POST сохранить содержимое в какой-либо базе данных (MongoDB, Postgres, Cassandra, любой базе данных, которую вы хотите).
    • Демонстрация концепции: Ввод базы данных
  • (11) Теперь сделайте конечную точку GET, которая извлекает часть данных из базы данных.
    • Демонстрация концепции: Получение данных из базы данных

Если вы хотите увидеть мои ответы в Go, на котором я профессионально кодирую уже 7 лет, вы можете посмотреть их здесь.

Куда идти после испытания?

Если вы справились с примерами, поздравляю вас и надеюсь, что вы узнали кое-что о том, как ведется веб-разработка на вашем языке!

Поскольку это пробник, упражнения должны были дать представление о каждой из концепций веб-разработки, о которых они рассказывают. Так что если вы новичок в веб-разработке, то хорошей следующей остановкой будет поиск концепций, о которых говорится в упражнениях, и дальнейшее изучение их. Например, в упражнении по санитарии ввода, как я уже упоминал в комментариях к коду, в производственном приложении я скорее всего буду генерировать HTML с помощью библиотеки, в которую встроена санитария пользовательских данных, а также более строгий набор модульных тестов, чтобы закрыть возможные дыры в безопасности. В то время как в примерах с базой данных я бы создавал остальные методы CRUD (Create, Read, Update, Delete) для работы с базой данных.

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

И независимо от уровня опыта, я рекомендую проверить сообщество вашего языка программирования, которое, в частности, отлично подходит для налаживания контактов (я получил свою первую работу на Go благодаря общению на Boston Go в 2015 году!), ознакомления с кодом других людей на этом языке, а если вы хотите выступить с публичным докладом на новом языке программирования, то встреча на этом языке — отличная возможность.

Наконец, я определенно призываю вас делиться своими ответами на вашем языке здесь, в твиттере @AndyHaskell2013, на GitHub или где-либо еще с хэштегом #WebDevSampler

Оцените статью
devanswers.ru
Добавить комментарий