The project represents a simple server app with an embedded database providing an example of REST API for Create and Read operations.
The project was created for practice of students of Intelligent Systems Theory in ITMO University.
- Bottle is used as an HTTP server framework
- CuttlePool is an implementation of a database connection pool
Make sure you have Python and pip installed
Install dependencies by executing the following command from the command line:
~ pip install -r requirements.txt
Execute the following command from the command line:
~ python main.py
The server will start on 127.0.0.1:8080
To choose another port you can pass it as a command line argument:
~ python main.py 5000
The server will start on 127.0.0.1:5000
Make sure you have Docker installed
The repository contains Dockerfile.
To start the server in Docker you should build a Docker image from the Dockerfile:
~ docker build --tag basic-backend .
And run the image as a Docker container:
~ docker run --publish 127.0.0.1:5000:5000 basic-backend
The server will start on 127.0.0.1:5000
Request
GET /
Response
Status: 200
Body
Hello!
Request
GET /users
Response
Status: 200
Body schema:
{
"type": "array",
"items": {
"type": "object",
"properties": {
"first_name": {
"description": "The first name of the user",
"type": "string"
},
"last_name": {
"description": "The last name of the user",
"type": "string"
},
"phone": {
"description": "The phone of the user",
"type": "string"
}
}
}
}
Body example:
[
{
"first_name": "Ivan",
"last_name": "Ivanov",
"phone": "+79111111111"
},
{
"first_name": "John",
"last_name": "Doe",
"phone": "+449111111111"
},
{
"first_name": "Johann",
"last_name": "Schmidt",
"phone": "+499111111111"
}
]
Request
POST /users
Body schema:
{
"type": "object",
"properties": {
"first_name": {
"description": "The first name of the user",
"type": "string"
},
"last_name": {
"description": "The last name of the user",
"type": "string"
},
"phone": {
"description": "The phone of the user",
"type": "string"
}
}
}
Body example:
{
"first_name": "Oleg",
"last_name": "Petrov",
"phone": "+79850000000"
}
Response
Status: 201
=====================================================================================
Проект представляет собой простое серверное приложение со встроенной базой данных и REST API для операций создания и чтения.
- Bottle используется в качестве фреймворка для создания HTTP-сервера
- CuttlePool - реализация пула соединений с базой данных
Убедитесь, что у вас установлены Python и pip
Установите зависимости, выполнив следующую команду в командной строке:
~ pip install -r requirements.txt
Для запуска сервера выполните следующую команду:
~ python main.py
По умолчанию сервер будет доступен по адресу 127.0.0.1:8080
Чтобы выбрать другой порт, укажите его как аргумент при запуске. Например,
~ python main.py 5000
Сервер будет доступен при обращении к указанному порту
В репозитории лежит Dockerfile.
С помощью него можно создать Docker-образ, выполнив следующую команду:
~ docker build --tag basic-backend .
А затем запустить Docker-контейнер на основе полученного образа:
~ docker run --publish 127.0.0.1:5000:5000 basic-backend
Сервер будет доступен по адресу 127.0.0.1:5000
Запрос
GET /
Ответ
Статус ответа: 200
Тело ответа:
Hello!
Запрос
GET /users
Ответ
Статус ответа: 200
JSON-схема ответа:
{
"type": "array",
"items": {
"type": "object",
"properties": {
"first_name": {
"description": "The first name of the user",
"type": "string"
},
"last_name": {
"description": "The last name of the user",
"type": "string"
},
"phone": {
"description": "The phone of the user",
"type": "string"
}
}
}
}
Пример тела ответа:
[
{
"first_name": "Ivan",
"last_name": "Ivanov",
"phone": "+79111111111"
},
{
"first_name": "John",
"last_name": "Doe",
"phone": "+449111111111"
},
{
"first_name": "Johann",
"last_name": "Schmidt",
"phone": "+499111111111"
}
]
Запрос
POST /users
JSON-схема тела запроса:
{
"type": "object",
"properties": {
"first_name": {
"description": "The first name of the user",
"type": "string"
},
"last_name": {
"description": "The last name of the user",
"type": "string"
},
"phone": {
"description": "The phone of the user",
"type": "string"
}
}
}
Пример тела ответа:
{
"first_name": "Oleg",
"last_name": "Petrov",
"phone": "+79850000000"
}
Ответ
Статус ответа: 201