Skip to content

kisliakovsky/basic-backend

Repository files navigation

basic-backend

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.

Technologies

Frameworks

  • Bottle is used as an HTTP server framework

Libraries

  • CuttlePool is an implementation of a database connection pool

Database

SQLite

Prerequisites

Make sure you have Python and pip installed

Launch from the command line

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

Prerequisites

Make sure you have Docker installed

Launch in Docker

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

Server API

Say hello

Request

GET /

Response
Status: 200
Body

Hello!

Get users

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"
  }
]

Create a user

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

=====================================================================================

basic-backend

Проект представляет собой простое серверное приложение со встроенной базой данных и REST API для операций создания и чтения.

Технологии

Фреймворки

  • Bottle используется в качестве фреймворка для создания HTTP-сервера

Библиотеки

  • CuttlePool - реализация пула соединений с базой данных

База данных

SQLite

Подготовка

Убедитесь, что у вас установлены Python и pip

Запуск из командной строки

Установите зависимости, выполнив следующую команду в командной строке:

~ pip install -r requirements.txt

Для запуска сервера выполните следующую команду:

~ python main.py

По умолчанию сервер будет доступен по адресу 127.0.0.1:8080

Чтобы выбрать другой порт, укажите его как аргумент при запуске. Например,

~ python main.py 5000

Сервер будет доступен при обращении к указанному порту

Запуск в Docker-контейнере

В репозитории лежит Dockerfile.
С помощью него можно создать Docker-образ, выполнив следующую команду:

~ docker build --tag basic-backend .

А затем запустить Docker-контейнер на основе полученного образа:

~ docker run --publish 127.0.0.1:5000:5000 basic-backend

Сервер будет доступен по адресу 127.0.0.1:5000

API сервера

Поприветствать

Запрос

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

About

Simple Backend app example

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published