강의자료 · 마이크로프로세서응용설계

센서 데이터를 제공하는 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는 실제 서버를 켜지 않고 요청을 보냅니다.

진행 방법

  1. 제공된 정상 요청을 실행하고 Status code와 JSON 필드를 확인하세요.
  2. start>end 요청을 실행하고 정상 응답과 구분하세요.

남길 결과

기록 항목과 확인할 점
요청
Status code
JSON의 핵심 필드

확인할 점

  • HTML 페이지와 JSON API의 역할을 구분했는가?
  • 서버를 외부에 공개하지 않고 요청 흐름을 확인했는가?

2. 잘못된 요청 구분하기

시작 조건

device 누락, start=abc, 없는 장치 m9, 존재하지 않는 /unknown 경로를 시험합니다.

진행 방법

  1. 네 요청의 Status code와 응답 본문을 표로 정리하세요.
  2. 없는 데이터와 잘못된 요청 중 어떤 경우를 빈 목록으로 처리할지 정하세요.
  3. 정상·오류 요청 두 개를 assert로 고정해 이후 수정 때 확인하세요.

남길 결과

기록 항목과 확인할 점
요청
Status code
의미
클라이언트의 다음 행동

확인할 점

  • 422 입력 검증과 404 경로 오류를 같은 문제로 설명하지 않았는가?
  • 민감한 서버 내부 정보를 오류 본문에 넣지 않았는가?

3. 저장소와 연결하는 경계

시작 조건

이전 단원의 SQLite query 함수를 API 안에서 호출하려 합니다.

진행 방법

  1. 임시 목록에서 읽는 부분을 저장소 함수 호출로 바꾸는 위치를 표시하세요.
  2. API 입력 검증과 DB 조회 책임을 분리하세요.
  3. 응답 한 건에서 장치·시각·단위가 사용자가 해석할 만큼 명확한지 확인하세요.

남길 결과

기록 항목과 확인할 점
구성요소
받는 입력
반환 값
실패 처리

확인할 점

  • 조회 로직을 경로마다 복사하지 않았는가?
  • 외부 장치 연결 전에 TestClient로 같은 요청을 재현할 수 있는가?

공식 예제·데이터