13장. REST API 와 FastAPI
용어 짚고 가기
API(Application Programming Interface)프로그램끼리 주고받는 약속입니다. 무엇을 어떤 꼴로 보내면 무엇이 돌아오는지 정합니다. Application(응용 프로그램), Programming(프로그래밍), Interface(맞닿는 면, 창구)의 머리글자입니다.HTTP(HyperText Transfer Protocol)웹에서 요청과 응답을 주고받는 약속입니다. 브라우저도 이것으로 웹 페이지를 받습니다. HyperText(링크로 이어진 글), Transfer(전송), Protocol(통신 규약)의 머리글자입니다.REST(Representational State Transfer)자원을 주소(URL)로, 할 일을 HTTP 메서드로 나타내는 API 설계 방식입니다. 이 방식을 따르면 RESTful 하다고 합니다. Representational(표현한), State(상태), Transfer(전달)의 머리글자로, 자원의 상태를 표현해 주고받는다는 뜻입니다.엔드포인트(endpoint)API 에서 부를 수 있는 주소와 메서드 하나입니다.POST /predict같은 것입니다. end(끝)와 point(지점)를 붙인 말로, 요청이 가 닿는 끝 지점이라는 뜻입니다.메서드(method)요청이 무엇을 하려는지 나타냅니다. GET(읽기), POST(만들기·처리), PUT(바꾸기), DELETE(지우기) 등입니다. method 는 "방법"이라는 뜻입니다.상태 코드(status code)응답의 결과를 나타내는 세 자리 숫자입니다. 200 은 성공, 404 는 없음, 500 은 서버 오류입니다. status 는 "상태", code 는 "부호"라는 뜻입니다.JSON(JavaScript Object Notation)사전과 목록을 글로 적는 꼴입니다. API 의 요청과 응답 본문에 가장 많이 씁니다. "자바스크립트 객체 표기법"이라는 뜻입니다.FastAPI파이썬 함수에 타입 힌트를 달면 API 와 입력 검사, 문서를 만들어 주는 웹 프레임워크입니다. Fast(빠른)와 API 를 붙인 이름입니다.Pydantic타입 힌트로 데이터의 꼴을 정하고 검사하는 라이브러리입니다. FastAPI 가 입력 검사에 씁니다. Python 의 Py 와 pedantic(꼼꼼히 따지는)을 합친 이름입니다.uvicornFastAPI 앱을 실제 서버로 띄우는 프로그램입니다. 이름의 uv 는 빠른 이벤트 처리 라이브러리 uvloop 에서 왔습니다.직렬화(serialization)메모리 속의 객체(학습한 모델 등)를 파일로 저장할 수 있게 바꾸는 것입니다. serial 은 "한 줄로 잇따르는"이라는 뜻으로, 객체를 바이트 한 줄로 늘어놓는다는 말입니다.인증(authentication)요청한 쪽이 누구인지 확인하는 것입니다. 실패하면 401 입니다. authentic(진짜의)에서 온 말로, 진짜 그 사람인지 확인한다는 뜻입니다.권한(authorization)확인된 사용자가 그 일을 해도 되는지 정하는 것입니다. 실패하면 403 입니다. authorize 는 "권한을 주다, 허락하다"라는 뜻입니다.API 키(API key)요청마다 머리글에 넣어 보내는 비밀 글자입니다. 누가 부르는지 알아보는 데 씁니다. key 는 "열쇠"라는 뜻입니다.JWT(JSON Web Token)사용자 정보와 만료 시각을 담고 서명한 토큰입니다. 서버는 서명만 확인하면 됩니다. JSON 으로 적은 웹용 Token(증표)이라는 뜻의 머리글자입니다.