сервис авторов

This commit is contained in:
Inohara 2024-09-27 16:53:32 +04:00
parent 37996c249a
commit a0ef65e0f9
7 changed files with 120 additions and 0 deletions

2
tsukanova_irina_lab_3/.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
/.venv
/.idea

View File

@ -0,0 +1,20 @@
# Использую базовый образ Python
FROM python:3.12-slim
# Устанавливаю рабочую директорию внутри контейнера
WORKDIR /app
# Копирую файл requirements.txt в контейнер
COPY author_service/requirements.txt .
# Устанавливаю зависимости
RUN pip install --no-cache-dir -r requirements.txt
# Копирую все файлы в контейнер
COPY author_service/author_service.py .
## Открываю порт 20001 для Flask
#EXPOSE 20001
# Команда для запуска Python-скрипта
CMD ["python", "author_service.py"]

View File

@ -0,0 +1,88 @@
from flask import Flask, jsonify, request
from uuid import uuid1
import uuid
class Author:
def __init__(self, name, surname):
self.uuid_: uuid = uuid1()
self.name: str = name
self.surname: str = surname
def to_dict(self):
return {
"uuid": self.uuid_,
"name": self.name,
"surname": self.surname
}
app = Flask(__name__)
authors: list[Author] = [
Author(name='Leon', surname='Kane'),
Author(name='James', surname='Rasal'),
Author(name='Tess', surname='Root')
]
def list_jsonify():
return jsonify([author.to_dict() for author in authors])
@app.route('/', methods=['GET'])
def get_all():
return list_jsonify(), 200
@app.route('/<uuid:uuid>', methods=['GET'])
def get_one(uuid_):
for author in authors:
if author.uuid_ == uuid_:
return author.to_dict(), 200
return 'Автор с таким uuid не был найден', 404
@app.route('/', methods=['POST'])
def create():
data = request.json
name = data.get('name', None)
surname = data.get('surname', None)
# if name is None or surname is None:
# return 'Недостаточно полей для создания нового автора', 404
new_author = Author(name, surname)
authors.append(new_author)
return get_one(new_author.uuid_)
@app.route('/<uuid:uuid>', methods=['PUT'])
def update_by_id(uuid_):
data = request.json
new_name = data.get('name', None)
new_surname = data.get('surname', None)
for author in authors:
if author.uuid_ == uuid_:
if new_name is not None:
author.name = new_name
if new_surname is not None:
author.surname = new_surname
return get_one(author.uuid_)
return 'Автор с таким uuid не был найден', 404
@app.route('/<uuid:uuid>', methods=['DELETE'])
def delete(uuid_):
for author in authors:
if author.uuid_ == uuid_:
authors.remove(author)
return 200
return 'Автор с таким uuid не был найден', 404
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000, debug=True)

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,10 @@
services:
author_service:
container_name: author_service
build:
context: .
dockerfile: ./author_service/Dockerfile
ports:
- "20001:5000"