Программирование на Python для системных аналитиков: как сделать REST API с нуля


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

🌟 Чтобы вы пробили барьер в понимании разработчиков.
🌟 Благодаря этому опыту вы поймете, что требования могут влиять на организацию программного кода.
🌟 Сделаете свой тестовый проект в портфолио, который есть не у всех аналитиков.
🌟 Возможно вам понравится 😄

Эта статья для продвинутых системных аналитиков, которые хотят расти в техническом направлении. Например, в архитекторов.

Здесь вы найдете инструкцию, как сделать свою первую программу с нуля до рабочего прототипа. В качестве примера рассматривается разработка программного интерфейса REST API.

Без воды. Сразу перехожу к практике. Только самое важное. Эта статья сделана как продолжение к посту в нашем Telegram-канале с разбором практических задач для аналитиков.


Настройка окружения - установка ПО для разработки, подготовка к разработке

1. Установка среды разработки PyCharm:


  • Установите PyCharm, используя стандартные инструменты операционной системы.
    Примеры скринов установки PyCharm для MacOS. Для Windows и Linux процессы установки отличается.
    На MacOS:


2. Установка Python:


  • Установите Python, используя стандартные инструменты операционной системы.
    Примеры скринов установки Python для MacOS. Для Windows и Linux процессы установки отличается.
    На MacOS:

Шаг 1. Запустили загруженный файл pkg. Читаем приветствие, если хочется. Нажимаем продолжить - кнопка "Continue" внизу.

Шаг 2. Соглашамся со всем. Нажимаем продолжить - кнопка "Continue" внизу.

Шаг 3. Соглашамся со всем - это лицензионное соглашение. Нажимаем продолжить - кнопка "Agree" в появившемся окне.

Шаг 4. Нажимаем "Install", чтобы запустить установку.

Шаг 5. После установки появилось это окно с Launcher Python. Его же можно найти в меню рядом с PyCharm.

Шаг 6. Установка завершена. Закрываем окно.

Готово! Проверьте наличие установленных файлов:


3. Первый запуск PyCharm:

Откройте PyCharm и активируйте лицензию.

Шаг 1. Запускаем программу впервые. Импорт настроек не нужен. Оставляем выбранный "Do not import settings" и нажимаем ОК. 

Шаг 2. Активируем триальный (пробный) период.

Шаг 3. Лицензия активирована в режиме пробного периода Trial! Можем продолжать работу. 

Создайте новый проект, выберите интерпретатор Python, который Вы только что установили.

Шаг 4. Создаем новый проект. Нажимаем кнопку "New Project".

Шаг 5. Настраиваем проект. В левой панели должен быть выбран Python. Меняем стандартное имя pythonProject на любое свое. Например myTestProject.
Интерпретатор должен быть выбран по умолчанию - версия установленного Python. Либо выберите его вручную.

Шаг 6. Нажмите Create после завершения настроек проекта. Готово! Ваш первый проект создан!



4. Основы Python в PyCharm

В окне редактора создайте файл hello.py.


Добавьте следующий код:

# Комментарий в коде начинается с символа "#". После этого символа всё, что написано до конца строки, игнорируется интерпретатором Python.

# Функция print() выводит сообщение в консоль.
print("Привет, мир!")

Этот код содержит всего одну команду, которая выводит строку "Привет, мир!" на экран.

Запускаем программу.

Ура! У Вас есть маленький опыт работы с Python.

А теперь к реальной задаче.



5. Реальная задача по REST API для первого проекта на Python для системных аналитиков

В этом примере мы создадим простое приложение, которое позволит нам получать информацию о конкретном автомобиле по его VIN-коду (уникальный номер автомобиля).

Для реализации этого приложения нам нужен будет:

  • frontend - куда пользователь будет вводить VIN-код автомобиля, 
  • backend - на котором будет реализован REST API метод для получения из БД (базы данных) сервера информации по автомобилю.


Установка библиотеки для работы с RESTful API

В терминале PyCharm введите:

pip install Flask

и нажмите кнопку Enter на клавиатуре.

Библиотека для работы с REST API Flask установлена.



6. Зачем нужен REST API: взаимодействие Backend и Frontend

Представьте себе ресторан. У вас есть кухня, где готовят блюда (это "backend" или "закулисье" вашего сайта), и есть официант, который приносит заказы от посетителей кухне и обратно (это REST API). Посетители ресторана — это "frontend" или "лицевая" часть вашего сайта, та, которую видят пользователи.

  1. Передача заказов: Как и официант в ресторане передает заказ кухне, REST API передает информацию между пользователем и сервером.

  2. Работа в команде: Пока кухня готовит блюдо, официант может обслуживать других клиентов. Точно так же, когда "закулисье" сайта обрабатывает информацию, "лицевая" часть может делать другие вещи.

  3. Безопасность: В ресторане посетители не имеют прямого доступа к кухне, чтобы не нарушать процесс приготовления. Вместо этого официант передает все заказы. REST API делает то же самое, обеспечивая безопасный обмен данными.

  4. Для всех одинаково: Один и тот же официант может обслуживать разные столики, и всем он приносит блюда по одному и тому же меню. Аналогично REST API может "обслуживать" разные части сайта или даже разные сайты, следуя одному "меню" или набору команд.

Таким образом, REST API — это своего рода "официант" в мире сайтов, который помогает обмениваться информацией между "кухней" и "посетителями" безопасно и эффективно.


7. Нужен план: постановка задачи системного аналитика на разработку REST API

На практической программе по дизайну REST API мы подробно разбираем подходы к постановке задачи: от определения URL и описания JSON-объектов, до создания API-документации в Postman и Swagger.

Здесь я привожу пример постановки задачи и описания для API-документации на разработку REST API метода по получению информации о конкретном автомобиле по его VIN-коду (уникальный номер автомобиля).


Метод получения информации об автомобиле по его VIN: GET/car/{carVin}

Описание метода:
Данный метод предназначен для получения информации об автомобиле на основе его уникального VIN-кода.
Метод производит поиск в БД автосервиса и возвращает информацию о марке, модели и годе выпуска автомобиля.
Доступ к этому методу в будущем должен быть ограничен только для авторизованных пользователей с ролью "менеджер автосервиса", но пока это не реализуем.

Запрос

  • BaseURL: http://yourdomain.com/api - у нас будет в тесте локальный хост (локальный сервер на компьютере).
  • API name: - для упрощения пока не вводим.
  • API version: v1
  • Method type: GET
  • Method name: /car/{carVin}
  • Authorization: Пока не требуется.

Пример JSON запроса:

Так как это GET-запрос, JSON-тело запроса не требуется. Информация передается через VIN-код в URL.

Код HTTP-ответа:

  • HTTP-200 OK: если информация об автомобиле найдена

Пример JSON ответа (в случае успешного запроса):

{
"brand": "Toyota",
"model": "Camry",
"year": 2020
}


  • HTTP-404 Not Found: если автомобиль с таким VIN-кодом не найден

Пример JSON ответа (в случае неудачного запроса):

{
"message": "Car not found"
}

Эта документация может быть представлена менеджеру автосервиса или разработчикам для интеграции и использования данного метода.


8. Backend: Создание первого метода REST API в Python (Flask API)

Создайте файл с именем backend.py и добавьте в него следующий код.

# Импортируем необходимые модули из библиотеки Flask
from flask import Flask, jsonify, request

# Создаем экземпляр класса Flask. Это наше веб-приложение.
app = Flask(__name__)


# Простая база данных автомобилей (в реальных условиях данные будут храниться в базе данных)
cars = {
"ABC123456": {"brand": "Toyota", "model": "Camry", "year": 2020},
"XYZ789012": {"brand": "Ford", "model": "Focus", "year": 2019},
"LMN345678": {"brand": "Honda", "model": "Civic", "year": 2021}
}

# Маршрут и функция для получения данных об автомобиле по VIN-коду
@app.route('/api/v1/car/<vin>', methods=['GET'])
def get_car(vin):
car = cars.get(vin)

if car:
return jsonify(car), 200
else:
return jsonify(message="Car not found"), 404

# Если этот файл запущен напрямую, запускаем веб-сервер на порту 5001
if __name__ == '__main__':
app.run(debug=True, port=5001)


9. Frontend: Тестирование и отладка метода REST API через UI (HTML + JavaScript)

Создайте файл с именем frontend.html.

<!-- Основная структура HTML-документа -->
<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Автосервис</title>
</head>

<body>

<!-- Интерфейс для ввода VIN-кода и отображения результатов -->
<h2>Поиск автомобиля по VIN:</h2>
<input type="text" id="vinInput" placeholder="Введите VIN">
<button onclick="fetchCarData()">Поиск</button>

<h3>Результат:</h3>
<pre id="carData"></pre>

<!-- JavaScript код для обработки запросов на бэкенд -->
<script>
function fetchCarData() {
const vin = document.getElementById('vinInput').value;
fetch(`http://127.0.0.1:5001/api/v1/car/${vin}`)
.then(response => response.json())
.then(data => {
document.getElementById('carData').textContent = JSON.stringify(data, null, 2);
})
.catch(error => {
console.error("Error:", error);
document.getElementById('carData').textContent = 'Ошибка при поиске автомобиля';
});
}
</script>

</body>

</html>


10. Итого - Как работает ваш первый REST API метод на Python

  1. Запустите файл backend.py. Он запустит Flask API на порту 5001.
  2. Откройте файл frontend.html в вашем веб-браузере.
  3. Введите VIN-код в соответствующее поле и нажмите кнопку "Поиск".
  4. JavaScript функция fetchCarData() отправит запрос на ваш бэкенд, получит информацию об автомобиле и отобразит её на странице.

На схеме показано, что Frontend обращается к Backend и его данным через программный интерфейс REST API, как это сделано в нашей программе.

1. Запустите файл backend.py. Он запустит Flask API на порту 5001.

2. Откройте файл frontend.html в вашем веб-браузере.

3. Введите VIN-код в соответствующее поле и нажмите кнопку "Поиск". JavaScript функция fetchCarData() отправит запрос на ваш бэкенд, получит информацию об автомобиле и отобразит её на странице.

4. Успешный тест.

5. Ошибка.

А теперь проверка в локальной версии Postman. Посмотрите, что внизу верный код ответа на ошибку и соответствующее сообщение в формате JSON.



Заключение

Разработанный метод REST API предоставляет возможность автоматизированно получать информацию об автомобилях по их VIN-кодам.

Для системных аналитиков понимание как работают такие методы REST API и практика по их созданю крайне ценна, так как это позволяет им лучше понимать, как данные передаются и обрабатываются в системе, а также формировать более точные и оптимизированные требования к разработчикам на разработку методов REST API и разработку API-документации, что, в свою очередь, сокращает время и ресурсы на реализацию проектов.


Изучение:

  • Официальная документация Python: Изучите базовые концепции языка Python.
  • Документация Flask: Подробное руководство по созданию веб-приложений с помощью Flask.
  • Дизайн REST API: Практический курс для системных аналитиков, который познакомит вас с подходами к проектированию и документированию методов REST API.

Советы:

  • Комментарии в коде помогут вам лучше понять его структуру и функциональность.
  • Не бойтесь экспериментировать в среде разработки, это поможет лучше освоить материал.


Екатерина Ананьева,
Основатель IT-школы системного анализа 

и проектирования GetAnalyst

15 августа 2023

Контакты

+7 (499) 686-15-46

*Instagram — запрещенная на территории РФ организация

Практический опыт здесь, 2021-2024

Мы используем файлы cookie, для персонализации сервисов и повышения удобства пользования сайтом. Если вы не согласны на их использование, поменяйте настройки браузера.