저번에 이어 API 계속이다.
파이썬의 프레임워크 중 하나인 FastAPI로 진행을 하는데
프레임워크에 대해서 한번 더 이해하고 가보자
프레임워크랑 함께 잘 등장하는 아이가 있는데
바로
라이브러리
이다
이 둘의 차이는
프레임워크는 개발자가 정해진 프레임워크의 툴 안에서
개발을 진행해야 한다는 것이고
라이브러리는 개발을 쭈욱 하다가
필요할 때 가져다 쓸 수 있는게 라이브러리이다.
아무래도
프레임워크를 쓰게 되면 더 제한된 환경에서 개발을 하게 되는 거 같다.
새로운 프레임 워크를 배울 때는
그 프레임 워크의 공식문서를 읽어봐야 된다고 한다.
그래야 해당 프레임워크 개발자의 의도나 목적에 대해 알 수 있다.
그렇다면 공식 문서를 보자
- 빠름: (Starlette과 Pydantic 덕분에) NodeJS 및 Go와 대등할 정도로 매우 높은 성능. 사용 가능한 가장 빠른 파이썬 프레임워크 중 하나.
- 빠른 코드 작성: 약 200%에서 300%까지 기능 개발 속도 증가. *
- 적은 버그: 사람(개발자)에 의한 에러 약 40% 감소. *
- 직관적: 훌륭한 편집기 지원. 모든 곳에서 자동완성. 적은 디버깅 시간.
- 쉬움: 쉽게 사용하고 배우도록 설계. 적은 문서 읽기 시간.
- 짧음: 코드 중복 최소화. 각 매개변수 선언의 여러 기능. 적은 버그.
- 견고함: 준비된 프로덕션 용 코드를 얻으십시오. 자동 대화형 문서와 함께.
- 표준 기반: API에 대한 (완전히 호환되는) 개방형 표준 기반: OpenAPI (이전에 Swagger로 알려졌던) 및 JSON 스키마.
아주 좋은 말들이 많다.
그럼 이제 이 좋은 프레임워크를 사용해보자
사용을 하려면 설치를 해야 한다.
파이썬의 프레임워크들이나 패키지들은
pip라는 단축어를 통해 쉽게 다운로드를 할 수 있다
pip는 파이썬 패키지 관리자라는 느낌
설치를 하자
VScode에서 터미널을 연다
(Ctrl + `)
입력창에
pip install fastapi
를 입력하고
엔터를 누른다.
끝
설치가 정말 쉽다.
설치 이후 다음과 같은 문구를 넣어준다
이렇게 넣어주는 이유는
공식문서에서 그렇게 하라고 하니까.....
여기서 app에 /hello 라는 경로로 들어왔을 때
인사를 해주는 say Hello()라는 API를 만들었다.
이렇게 하 아주 간단한 API를 만든 거다
이제 이 API를 띄어줄 수 있는 서버가 필요하다
터미널에 pip install uvicorn[standard] 이렇게 작성을 하고 엔터를 누른다
이후에 uvicorn main:app --reload라고 하면 어떤 웹 서버가 띄어지게 된다.
여기서 uvicorn은 서버라고 보면 되겠고
main은 우리가 만들어 놓은 파이썬 파일이다.
뒤에 app는 코드에서 보면 app=FastAPI 이 부분이다
즉 main 파일 안에 있는 app을 실행시킨다는 것이다.
이렇게 실행을 하면 중간에 http로 시작하는 게 보일 텐데 컨트롤 클릭을 누르면 아래 같은 창이 띄어질 것이다.
위에서 hello라는 경로에 인사를 만들어 놨으니 주소창의 맨 뒤에/hello를 적어 보자
그러면 이렇게 응답이 오게 된다.
다음은 FastAPI의 강력한 기능에 대해서 알아보자
주소창의 8000 뒤에다가 /docs라고 치면
이 서버에 어떤 API가 적용되고 있는지 한눈에 보인다.
예전 서버 개발자들은 이런 것들도 다 하나하나 설정했다고 한다
이런 식으로 어떤 API가 있고 그 안의 내용이 뭔지 볼 수 있다.
더 해보자
이번에는 경로에 아무것도 안 넣고 해 볼 건데
이렇게 하면 루트 경로라고 해서 가장 첫 화면이라고 볼 수 있겠다
주소창에 8000 뒤에 아무것도 없다.
그럼 조금 전에 배웠던 docs 경로로 가볼까?
방금 만든 루트경로도 잘 들어와 있다
이번에는 이렇게 간단하게 API와
웹서버를 만들어 봤다.
뭔가 신기하고 재밌다~~!!
결론은
나 지금 고성
'개발공부' 카테고리의 다른 글
백엔드_FastAPI로 워들게임 연동하기 (2) | 2023.06.30 |
---|---|
백엔드_정보를 전달하는 방식(FastAPI) (2) | 2023.06.30 |
API란 무엇인가? (21) | 2023.06.29 |
백엔드_Python(파이썬) 환경 설정 및 문법 (2) | 2023.06.29 |
크기를 조절 하는 px 대신 쓰는 rem에 대해서 (16) | 2023.06.28 |