/transportation_in_python_w_sanic

TransportSharing implementation in Python w/ Sanic

Primary LanguagePython

transportSharing

Transport sharing implementation in Python w/ Sanic

Quick Start

./db/init.sql을 통해서 MySQL init 후,

# Install required libs

$ python3 -m venv venv
$ source venv/bin/activate
$ pip3 install -r requirements.txt

# Set up environment variables or use the default values.

$ export YB_SERVER_HOST=""  # default localhost     서버가 돌아가는 HOST
$ export YB_SERVER_PORT=""  # default 7777          서버가 돌아가는 PORT
$ export YB_DB_HOST=""      # default localhost     MySQL DB가 돌아가는 HOST
$ export YB_DB_PORT=""      # default 3306          MySQL DB가 돌아가는 PORT
$ export YB_DB_USER=""      # default root          MySQL DB USER
$ export YB_DB_PW=""        # default test1234      MySQL DB PASSWORD
$ export YB_DB_DB=""        # default yellowbus     MySQL DB에서 사용할 Database

$ python3 main.py 

API Guide

  • 노선 정보 생성 API

POST Request의 JSON body에 대응하는 노선을 생성합니다. 노선의 이름은 Unique 합니다. 정류장은 최대 10개까지 있습니다.

http://[YB_SERVER_HOST]:[YB_SERVER_PORT]/api/v1/create_route

Method: ['POST']

Request Body:

{
    "name": "노선 이름",
    "courses": [
        {"name": "정류장 이름", "order": 1},
        ...
        {"name": "정류장 이름", "order": N <= 10}
    ]
}

Response:

{
    "result": "success"
}

alt text alt text alt text alt text




  • 노선 정보 조회 API

모든 노선의 ID와 이름을 출력합니다.

http://[YB_SERVER_HOST]:[YB_SERVER_PORT]/api/v1/route

Method: ['GET']

Request Body:

None

Response:

{
    "courses": [
        {"id": id, "name": "노선 이름"},
        ...
    ]
}

alt text




  • 노선 상세보기 API

URI의 <route_id>에 해당하는 노선의 ID와 이름, 코스를 출력합니다.

http://[YB_SERVER_HOST]:[YB_SERVER_PORT]/api/v1/route/<route_id>

Method: ['GET']

Request Body:

None

Response:

{
    "id": route_id,
    "name": "노선 이름"
    "course": [
        {"name": "정류장 이름", "order": 1},
        ...
        {"name": "정류장 이름", "order": N <= 10},
    ]
}

alt text




  • 노선 정보 수정 API

URI의 <route_id>에 해당하는 노선의 이름을 Request JSON Body["name"]으로 수정합니다.

http://[YB_SERVER_HOST]:[YB_SERVER_PORT]/api/v1/route/<route_id>

Method: ['PUT']

Request Body:

{
    "name": "새로운 노선 이름",
}

Response:

{
    "result": "success"
}

alt text alt text




  • 노선 정보 삭제 API

URI의 <route_id>에 해당하는 노선을 삭제합니다.

http://[YB_SERVER_HOST]:[YB_SERVER_PORT]/api/v1/route/<route_id>

Method: ['DELETE']

Request Body:

None

Response:

{
    "result": "success"
}

alt text alt text





SQL Guide

./db/init.sql을 통해서 MySQL init




  • route
CREATE TABLE route (
    `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
    `route_name` VARCHAR(32) NOT NULL UNIQUE,
    PRIMARY KEY (`id`)
)
DEFAULT CHARACTER SET = utf8;






  • route_order
CREATE TABLE route_order (
    `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
    `route_id` INT UNSIGNED NOT NULL,
    `course_id` INT UNSIGNED NOT NULL,
    `order` SMALLINT NOT NULL,
    PRIMARY KEY (`id`),
    FOREIGN KEY (`course_id`) REFERENCES course(`id`) ON DELETE CASCADE,
    FOREIGN KEY (`route_id`) REFERENCES route(`id`) ON DELETE CASCADE
);






  • course
CREATE TABLE course (
    `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
    `course_name` VARCHAR(32) NOT NULL UNIQUE,
    PRIMARY KEY (`id`)
)
DEFAULT CHARACTER SET = utf8;