센서 데이터를 제공하는 HTTP API
서버가 동작한다는 것과 요청을 올바르게 처리한다는 것은 다릅니다. 경로·누락 입력·안전한 응답을 먼저 시험합니다.
실습 전에
01 서버를 켜기 전에 요청을 시험할 수 있을까요?
설명
TestClient로 경로·Parameter·응답을 실제 HTTP 서버 공개 없이 확인할 수 있습니다.
02 없는 장치와 없는 경로는 어떻게 구분할까요?
설명
조회가 빈 경우와 API 경로 자체가 없는 경우는 다른 응답 규칙을 사용합니다.
실행 조건
fastapi·httpx가 필요합니다. 브라우저 시험을 선택할 때만 uvicorn을 추가로 사용합니다.
필요한 패키지가 없으면 Colab·Jupyter 코드 셀에서 %pip install fastapi==0.162.0 httpx==0.28.1를 실행하세요.
1. 요청을 함수로 시험하기
시작 조건
FastAPI의 /readings 경로에서 device와 start·end를 받습니다. TestClient는 실제 서버를 켜지 않고 요청을 보냅니다.
진행 방법
- 제공된 정상 요청을 실행하고 Status code와 JSON 필드를 확인하세요.
- start>end 요청을 실행하고 정상 응답과 구분하세요.
남길 결과
기록 항목과 확인할 점
- 요청
-
- Status code
-
- JSON의 핵심 필드
-
확인할 점
- HTML 페이지와 JSON API의 역할을 구분했는가?
- 서버를 외부에 공개하지 않고 요청 흐름을 확인했는가?
2. 잘못된 요청 구분하기
시작 조건
device 누락, start=abc, 없는 장치 m9, 존재하지 않는 /unknown 경로를 시험합니다.
진행 방법
- 네 요청의 Status code와 응답 본문을 표로 정리하세요.
- 없는 데이터와 잘못된 요청 중 어떤 경우를 빈 목록으로 처리할지 정하세요.
- 정상·오류 요청 두 개를 assert로 고정해 이후 수정 때 확인하세요.
남길 결과
기록 항목과 확인할 점
- 요청
-
- Status code
-
- 의미
-
- 클라이언트의 다음 행동
-
확인할 점
- 422 입력 검증과 404 경로 오류를 같은 문제로 설명하지 않았는가?
- 민감한 서버 내부 정보를 오류 본문에 넣지 않았는가?
3. 저장소와 연결하는 경계
시작 조건
이전 단원의 SQLite query 함수를 API 안에서 호출하려 합니다.
진행 방법
- 임시 목록에서 읽는 부분을 저장소 함수 호출로 바꾸는 위치를 표시하세요.
- API 입력 검증과 DB 조회 책임을 분리하세요.
- 응답 한 건에서 장치·시각·단위가 사용자가 해석할 만큼 명확한지 확인하세요.
남길 결과
- API–저장소 연결 코드 또는 함수 계약 표.
기록 항목과 확인할 점
- 구성요소
-
- 받는 입력
-
- 반환 값
-
- 실패 처리
-
확인할 점
- 조회 로직을 경로마다 복사하지 않았는가?
- 외부 장치 연결 전에 TestClient로 같은 요청을 재현할 수 있는가?
공식 예제·데이터