Почему я сделала эту статью, хотя программирование обычно вне зоны ответственности системных аналитиков:
🌟 Чтобы вы пробили барьер в понимании разработчиков.
🌟 Благодаря этому опыту вы поймете, что требования могут влиять на организацию программного кода.
🌟 Сделаете свой тестовый проект в портфолио, который есть не у всех аналитиков.
🌟 Возможно вам понравится 😄
Эта статья для продвинутых системных аналитиков, которые хотят расти в техническом направлении. Например, в архитекторов.
Здесь вы найдете инструкцию, как сделать свою первую программу с нуля до рабочего прототипа. В качестве примера рассматривается разработка программного интерфейса REST API.
Без воды. Сразу перехожу к практике. Только самое важное. Эта статья сделана как продолжение к посту в нашем Telegram-канале с разбором практических задач для аналитиков.
1. Установка среды разработки PyCharm:
2. Установка Python:
Готово! Проверьте наличие установленных файлов:
3. Первый запуск PyCharm:
Откройте PyCharm и активируйте лицензию.
Шаг 3. Лицензия активирована в режиме пробного периода Trial! Можем продолжать работу.
Создайте новый проект, выберите интерпретатор Python, который Вы только что установили.
Шаг 6. Нажмите Create после завершения настроек проекта. Готово! Ваш первый проект создан!
Проблемы и решения
Создание первого проекта на Python в PyCharm может встретиться с рядом проблем, особенно если у вас нет опыта работы с этим инструментом или языком программирования. Вот список самых распространенных проблем и их решений, которые могут возникнуть на разных операционных системах:
Проблема: Не найден интерпретатор Python при создании проекта.
Проблема: Ошибки связанные с правами доступа в macOS или Linux при попытке установить пакеты.
Проблема: Не удается запустить PyCharm на Windows из-за отсутствия DLL.
Проблема: Ошибки кодировки при выводе текста на русском языке.
# -*- coding: utf-8 -*-
.Проблема: PyCharm медленно работает или "зависает".
Проблема: Ошибки при попытке установить пакеты через pip в PyCharm.
pip install имя_пакета
.Проблема: Ошибки, связанные с версией Python.
Важно помнить, что сообщество Python очень активное и поддерживающее, так что большинство проблем можно решить с помощью поиска в интернете или обращения на форумы и в чаты специалистов. Например - чат GetAnalyst в телеграм.
В окне редактора создайте файл hello.py
.
Добавьте следующий код:
# Комментарий в коде начинается с символа "#". После этого символа всё, что написано до конца строки, игнорируется интерпретатором Python.
# Функция print() выводит сообщение в консоль.
print("Привет, мир!")
Этот код содержит всего одну команду, которая выводит строку "Привет, мир!" на экран.
Запускаем программу.
Ура! У Вас есть маленький опыт работы с Python.
А теперь к реальной задаче.
В этом примере мы создадим простое приложение, которое позволит нам получать информацию о конкретном автомобиле по его VIN-коду (уникальный номер автомобиля).
Для реализации этого приложения нам нужен будет:
Установка библиотеки для работы с RESTful API
В терминале PyCharm введите:
pip install Flask
и нажмите кнопку Enter на клавиатуре.
Библиотека для работы с REST API Flask установлена.
Представьте себе ресторан. У вас есть кухня, где готовят блюда (это "backend" или "закулисье" вашего сайта), и есть официант, который приносит заказы от посетителей кухне и обратно (это REST API). Посетители ресторана — это "frontend" или "лицевая" часть вашего сайта, та, которую видят пользователи.
Передача заказов: Как и официант в ресторане передает заказ кухне, REST API передает информацию между пользователем и сервером.
Работа в команде: Пока кухня готовит блюдо, официант может обслуживать других клиентов. Точно так же, когда "закулисье" сайта обрабатывает информацию, "лицевая" часть может делать другие вещи.
Безопасность: В ресторане посетители не имеют прямого доступа к кухне, чтобы не нарушать процесс приготовления. Вместо этого официант передает все заказы. REST API делает то же самое, обеспечивая безопасный обмен данными.
Для всех одинаково: Один и тот же официант может обслуживать разные столики, и всем он приносит блюда по одному и тому же меню. Аналогично REST API может "обслуживать" разные части сайта или даже разные сайты, следуя одному "меню" или набору команд.
Таким образом, REST API — это своего рода "официант" в мире сайтов, который помогает обмениваться информацией между "кухней" и "посетителями" безопасно и эффективно.
На практической программе по дизайну REST API мы подробно разбираем подходы к постановке задачи: от определения URL и описания JSON-объектов, до создания API-документации в Postman и Swagger.
Здесь я привожу пример постановки задачи и описания для API-документации на разработку REST API метода по получению информации о конкретном автомобиле по его VIN-коду (уникальный номер автомобиля).
Метод получения информации об автомобиле по его VIN: GET
/car/{carVin}
Описание метода:
Данный метод предназначен для получения информации об автомобиле на основе его уникального VIN-кода.
Метод производит поиск в БД автосервиса и возвращает информацию о марке, модели и годе выпуска автомобиля.
Доступ к этому методу в будущем должен быть ограничен только для авторизованных пользователей с ролью "менеджер автосервиса", но пока это не реализуем.
Запрос
http://yourdomain.com/api - у нас будет в тесте локальный хост (локальный сервер на компьютере).
- для упрощения пока не вводим.
v1
GET
/car/{carVin}
Пример JSON запроса:
Так как это GET-запрос, JSON-тело запроса не требуется. Информация передается через VIN-код в URL.
Код HTTP-ответа:
Пример JSON ответа (в случае успешного запроса):
{
"brand": "Toyota",
"model": "Camry",
"year": 2020
}
Пример JSON ответа (в случае неудачного запроса):
{
"message": "Car not found"
}
Эта документация может быть представлена менеджеру автосервиса или разработчикам для интеграции и использования данного метода.
Создайте файл с именем 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)
Создайте файл с именем 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>
backend.py
. Он запустит Flask API на порту 5001.frontend.html
в вашем веб-браузере.fetchCarData()
отправит запрос на ваш бэкенд, получит информацию об автомобиле и отобразит её на странице.На схеме показано, что Frontend обращается к Backend и его данным через программный интерфейс REST API, как это сделано в нашей программе.
А теперь проверка в локальной версии Postman. Посмотрите, что внизу верный код ответа на ошибку и соответствующее сообщение в формате JSON.
Проблема с остановкой работы Backend и ее решение
Для освобождения порта, вам сначала нужно найти процесс, который использует этот порт, а затем завершить этот процесс. Подход будет зависеть от вашей операционной системы. Вот инструкции для наиболее популярных ОС:
Найти процесс, использующий порт 5001:
Откройте командную строку (CMD) и введите:
netstat -ano | findstr :5001
Обратите внимание на последний столбец, который представляет собой идентификатор процесса (PID).
Завершить процесс:
Замените YOUR_PID
на идентификатор процесса (PID) из предыдущего шага и введите:
r
taskkill /PID YOUR_PID /F
Найти процесс, использующий порт 5001:
Откройте терминал и введите:
css
lsof -i :5001
Обратите внимание на столбец PID.
Завершить процесс:
Замените YOUR_PID
на идентификатор процесса (PID) из предыдущего шага и введите:
bash
kill -9 YOUR_PID
После выполнения этих команд порт 5001 будет освобожден.
Разработанный метод REST API предоставляет возможность автоматизированно получать информацию об автомобилях по их VIN-кодам.
Для системных аналитиков понимание как работают такие методы REST API и практика по их созданю крайне ценна, так как это позволяет им лучше понимать, как данные передаются и обрабатываются в системе, а также формировать более точные и оптимизированные требования к разработчикам на разработку методов REST API и разработку API-документации, что, в свою очередь, сокращает время и ресурсы на реализацию проектов.
Изучение:
Советы:
Екатерина Ананьева,
Основатель IT-школы системного анализа
и проектирования GetAnalyst
15 августа 2023
Мы используем файлы cookie, для персонализации сервисов и повышения удобства пользования сайтом. Если вы не согласны на их использование, поменяйте настройки браузера.