이승민 | 임혁 | 전재완 | 정용수 |
---|---|---|---|
Github | Github | Github | Github |
💻 Team work | 📒 Project page |
공지사항, 컨벤션 공유 등 우리 팀을 위한 룰 |
요구사항 분석, 정보 공유 및 원할한 프로젝트를 위해 사용 |
- Open API 방식의 공공데이터를 수집, 가공하여 전달하는 REST API와 이를 요청하는 클라이언트 개발
어떤 정보를 조회 할 수 있는가?
- 서울시 하수관로 수위 현황
-
요청 인자
- TYPE : 요청하는 데이터의 타입으로, JSON 타입 데이터를 요청한다.
- START_INDEX / END_INDEX : 데이터 행의 시작과 끝 번호이다.
- GUBN : 조회하고자 하는 지역명 코드이다.
-
서울시 강우량 정보
-
요청인자
- TYPE : 요청하는 데이터의 타입으로, JSON 타입 데이터를 요청한다.
- START_INDEX / END_INDEX : 데이터 행의 시작과 끝 번호이다.
- GU_NAME : 조회하고자 하는 지역명이다.
-
- Python, Django
- REST API 구현
- Docstring
- 데이터는 JSON으로 전달
- Docker
- Unit test codes
- REST API Documentation (Swagger UI)
REST API V1
-
필수
- 구분 코드(GUBN)로 하수관로 함께 서울시 하수관로 수위 현황과 강우량 정보를 결합하여 데이터를 JSON으로 보낸다.
-
서버
-
구분 코드(GUBN)에 맞는 서울시 하수관로 수위 현황 및 강우량 정보를 결합하여 client에게 필터링한 데이터를 JSON 형식으로 반환한다.
-
#request URI : /api/rainfall-drain/?gubn=1 #response { 'REQUEST_TIME': '2022-06-30 11:53:02.0', (datetime.datetime.now()) 'GUBN':1 'GU_NAME': '종로구', 'RAINFALL_DATA': { 'DATA_NUM' : 2, 'ROW' :[ {'GU_CODE': 110.0, 'RAINFALL10': '0', 'RAINGAUGE_CODE': 1002.0, 'RAINGAUGE_NAME': '부암동', 'RECEIVE_TIME': '2022-06-30 11:49'}, ... ] }, 'DRAINPIPE_DATA': { 'DATA_NUM' :4, 'ROW' :[ {'GUBN': '01', 'IDN': '01-0001', 'MEA_WAL': 0.63, 'MEA_YMD': '2022-06-30 11:53:02.0', 'SIG_STA': '통신양호'}, ... ] } }
-
-
클라이언트
- 구분 코드(GUBN)와 함께 API를 호출한다.
- request method : GET
- URL : domain/api/rainfall-drain
- Query String(key = value)
- gubn=int : 조회할 구의 구분 코드를 입력한다. 입력 값은 정수로 유효 값은 1부터 25이다.
📌 Dependency
# 로컬에서 바로 서버 구동
pip install -r requirements.txt
python manage.py runserver
# 도커 실행
pip install docker
pip install docker-compose
docker-compose up -d
docker를 이용해 프로젝트 api를 컨테이너화 하여 GCP에 배포했습니다
GCP 배포, 테스트 및 동작을 확인하였으며, 비용 등의 이유로 현재는 접속불가할 수 있습니다.
Pytest-Django로 구현 된 28개의 테스트 구현
- 성공 케이스: 25개 (통과)
- 실패 케이스: 3개 (통과)