/Apartment

Primary LanguagePython

Final Assignment - 아파트 현관 출입 시스템의 보고서 API

Description

아파트 관리비 시스템 보고서 API를 만드는 프로젝트입니다. 관리자의 권한을 이용해 세대별 정보(관리비, 세대호수, 비밀번호)등 확인이 가능하고, 세대원 권한을 이용하면 자신의 세대호수, 비밀번호를 이용하여 오직 자신만의 관리비와 정보를 확인할 수 있도록 API를 구현하였습니다.

Environment

  • Python 3.8
  • Django rest framework
  • Conda
  • Mysql
  • Docker

Prerequisite

  1. docker 설치
  1. docker-compose 명령어 실행
# docker-compose 명령어
$ docker-compose up

Files

  • requirement.txt : 프로젝트 실행을 위한 모든 설치파일들의 목록을 txt 형식으로 저장해놓은 파일
  • my_settings.py : Github에 올라가면 안되는 프로젝트 설정 파일들이 있는 파일 ex(DATABASE, SECETKEY_KEY)
  • Dockerfile : Dcoker image를 생성하기 위한 파일
  • Docker-compose.yml : docker-compose를 실행하기 위한 명령어를 적어둔 파일이다.
  • clients : admin 유저의 token 인증을 위한 파일
  • api/admins : 관리자 권한을 가진 사용자가 API 호출 기능을 구현한 파일
  • api/publics : 세대원들이 자신의 관리비를 보기 위한 API 기능을 구현한 파일

Usage

git clone 명령어

git clone <현재 repository 주소>

tree

├── Dockerfile
├── README.md
├── apartment
│   ├── __init__.py
│   ├── asgi.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
├── api
│   ├── admins
│   │   ├── __init__.py
│   │   ├── admin.py
│   │   ├── apps.py
│   │   ├── migrations
│   │   ├── models.py
│   │   ├── serializers.py
│   │   ├── tests.py
│   │   ├── urls.py
│   │   └── views.py
│   ├── publics
│   │   ├── __init__.py
│   │   ├── admin.py
│   │   ├── apps.py
│   │   ├── migrations
│   │   ├── models.py
│   │   ├── serializers.py
│   │   ├── tests.py
│   │   ├── urls.py
│   │   └── views.py
│   └── urls.py
├── clients
│   ├── token-auth.py
├── docker-compose.yml
├── manage.py
├── my_settings.py
├── requirements.txt

API

  • Admins
    • api/admins(관리자 권한 필요 : 로그인 필요)
    {
      "detail": "Authentication credentials were not provided."
    }
    
    • api/admins
    
    HTTP 200 OK
    Allow: GET, POST, HEAD, OPTIONS
    Content-Type: application/json
    Vary: Accept
    
    [
      {
          "id": 1,
          "name": "한성봉",
          "password": "1111",
          "household_number": "0101",
          "payment": "10000.000"
      },
      {
          "id": 2,
          "name": "노성우",
          "password": "2222",
          "household_number": "0102",
          "payment": "20000.000"
      },
      {
          "id": 3,
          "name": "배찬영",
          "password": "3333",
          "household_number": "0103",
          "payment": "30000.000"
      }
    ]
    
    • api/admins/<int:pk> ex) pk=1
    [
      {
          "id": 1,
          "name": "한성봉",
          "password": "1111",
          "household_number": "0101",
          "payment": "10000.000"
      }
    ]
    
  • Publics
    • api/publics (엔드포인트 진입 시 다른 세대원의 정보는 볼 수 없음.)
    {
      "detail": "Method \"GET\" not allowed."
    }
    
    • api/publics
    # household_number : 0101
    # password : 1111
    {
      "id": 1,
      "name": "한성봉",
      "password": "1111",
      "household_number": "0101",
      "payment": "10000.000"
    }
    
    • api/publics (세대 호수, 비밀번호 틀릴 시)
    HTTP 400 Bad Request
    Allow: POST, OPTIONS
    Content-Type: application/json
    Vary: Accept
    
    {
      "MESSAGE": "입력하신 정보와 일치하지 않습니다."
    }