CODENAVY
Django REST API 인수인계 본문
VS code로 테스트서버 접속 > health_prediction_django 폴더
1. runserver manage.py로 테스트페이지 구동
python runserver manage.py
구글 크롬에서 아래 url로 api test view page 확인
http://127.0.0.1:8000/api/v1/mets <- 대사질환 모델
http://127.0.0.1:8000/api/v1/age <- 생체/신체나이 예측 모델
- runserver로 구동하고 있는 중에 코드를 수정하면, 수정된 내용이 자동적으로 반영되어 다시 테스트페이지가 renew됨
- 크롬에서 새로고침하면 바로 수정된 사항 확인 가능
- runserver로 구동하는 건 터미널 창에서 Ctrl+C 누르면 바로 구동 종료됨
2. 백엔드로 서버 구동
bash run_production_server.sh
- 백엔드의 경우, 한 번 실행시켜 놓으면 kill하기 전까지 백에서 계속 실행됨
현재 구동되고 있는 서버와 포트 번호 확인 Linux 명령어
netstat -nltp
수정사항 반영을 위해 이전에 구동되고 있던 서버 kill 후 서버 재구동
kill -9 00000(작업번호)
bash run_production_server.sh
개발팀 측에서 항상 test 할 수 있도록 해놓아야 하므로, 수정 후 서버 반드시 다시 돌려놓기!!!
3. Django APP 관련
주로 수정이 필요한 파일들: models.py, views.py
models.py: input으로 어떤 key(feature)가 들어오며, 해당 key에 대한 value값은 어떤 형태를 가지는지 명시하는 파일
- value의 형태에 대해 FloatField, IntegerField 등으로 지정(이후에 views에서 input값이 valid한 형태를 가지는지 확인하는 과정을 거치게 됨)
- null로 받는 것이 가능한지/default값을 무엇으로 지정할지 등 파라미터로 명시 가능
- 주의: 여기에서의 default값은 DB와 관련된 것으로, 실제 모델 input에 해당 feature가 없었을 때 전달하는 default값이 아님! 모델 input으로 전달하는 default값은 views.py에서 지정해주어야 함
views.py: input에 대해 어떤 과정을 거쳐 어떤 output을 돌려줄 것인지 명시하는 파일
- mandatory feats에 필수 파라미터 명시되어 있음
- input에서 필수 파라미터 이외의 feature가 입력되더라도, 그 중에서 필수 파라미터만 골라서 모델 input으로 전달
- 필수 파라미터 중 하나라도 정보가 없으면 모델 예측 불가, 예측값으로 None과 false를 return
- resultDate의 경우, 정보가 없으면 20010101 디폴트값으로 return하도록 되어 있음
url로 들어가서 아래 예시를 input으로 쳐보고 예측이 잘되는지 확인하면 됨
<대사증후군 input 형태>
{"input":
[{
"resultDate": 20130203,
"gender": 0.0,
"WC": 96.0,
"HDLC": 45.0,
"TG": 125.0,
"SBP": 132.0,
"DBP": 77.0,
"FPG": 85.0
},
{
"resultDate": 20130204,
"gender": 0.0,
"WC": 96.0,
"HDLC": 45.0,
"TG": 125.0,
"SBP": 132.0,
"DBP": 77.0,
"FPG": 85.0
},
{
"resultDate": 20130205,
"gender": 0.0,
"WC": 96.0,
"HDLC": 45.0,
"TG": 125.0,
"SBP": 132.0,
"DBP": 77.0,
"FPG": 85.0
}]
}
<age모델 input 형태>
{"input":
[{
"resultDate": 20120202,
"height": 163.0,
"weight": 49.0,
"WC": 74.0,
"BMI": 19.8,
"Sight_L": 1.5,
"Sight_R": 0.9,
"Hearing_Normal": 1.0,
"Proteinuria_Negative": 1.0,
"SBP": 103.0,
"DBP": 60.0,
"hemoglobin": 13.5,
"FPG": 79.0,
"TC": 208.0,
"HDLC": 62.0,
"TG": 58.0,
"LDLC": 134.0,
"creatinine": 0.6,
"GFR": 109.0,
"AST_SGOT": 27.0,
"ALT_SGPT": 19.0,
"GTP": 13.0,
"age": 52.0,
"gender": 0.0
},
{
"resultDate": 20120203,
"height": 170.0,
"weight": 53.3,
"WC": 100.0,
"BMI": 27.0,
"Sight_L": 1.5,
"Sight_R": 0.9,
"Hearing_Normal": 1.0,
"Proteinuria_Negative": 1.0,
"SBP": 120.0,
"DBP": 70.0,
"hemoglobin": 13.5,
"FPG": 79.0,
"TC": 208.0,
"HDLC": 62.0,
"TG": 58.0,
"LDLC": 134.0,
"creatinine": 0.6,
"GFR": 109.0,
"AST_SGOT": 27.0,
"ALT_SGPT": 19.0,
"GTP": 13.0,
"age": 22.0,
"gender": 0.0
}]
}