전체 글
[ FastAPI ] 하위-의존성
[ FastAPI ] 하위-의존성
2021.10.20하위-의존성 하위-의존성을 가진 의존성을 생성할 수 있습니다. 그것들은 필요한 만큼 깊을 수 있습니다. FastAPI는 그것들을 해결합니다. 첫 번째 의존성 "의존 가능한 것" 다음과 같이 첫 번째 의존성 ("의존 가능한 것") 을 생성할 수 있습니다: 이것은 선택적 쿼리 매개변수 q 를 str 로 선언하고, 반환합니다. 이것은 꽤 단순 하지만 (매우 유용하지는 않고), 하위-의존성의 작동 방식에 집중하는 데 도움 됩니다. 두 번째 의존성, "의존 가능한 것"과 "디펜던트" 그러면 동시에 스스로 (이것 또한 "디펜던트"인) 의존성을 선언하는 ("의존 가능한") 또 다른 의존성 함수를 생성할 수 있습니다: 선언된 매개변수에 집중해봅시다: 이 함수가 스스로 ("의존 가능한") 의존성임에도 불구하고, (다른 ..
[ FastAPI ] 의존성으로서의 클래스
[ FastAPI ] 의존성으로서의 클래스
2021.10.19의존성 주입 시스템을 더 깊이 알아보기 전에, 이전 예시를 개선해봅시다. 이전 예시에서의 dict 이전 예시에서, ("의존가능한") 의존성으로부터 dict 을 반환했습니다: 그러나 경로 동작 함수의 매개변수 commons 내부에 dict 을 받게 됩니다. 그리고 키와 값의 자료형을 모르기 때문에, 편집기가 dict 에 대한 (완성 기능과 같은) 많은 지원을 제공할 수 없다는 걸 압니다. 더 좋게 할 수 있습니다... 의존성으로 만들어주는 것 지금까지 함수로 선언된 의존성을 보았습니다. 그러나 그것이 (더 일반적인 상황임에도 불구하고) 의존성을 선언하는 유일한 방법이 아닙니다. 주요한 사실은 의존성이 "호출 가능"해야 한다는 것입니다. 파이썬에서는 함수와 같이 파이썬이 "호출"할 수 있는 모든 것이 "호출..
[ FastAPI ] 의존성 - 첫 단계
[ FastAPI ] 의존성 - 첫 단계
2021.10.06FastAPI는 매우 강력하지만 직관적인 의존성 주입 시스템을 갖고 있습니다. 이것은 사용하기 매우 단순하게, 그리고 어떤 개발자라도 FastAPI를 사용하는 다른 컴포넌트와 이것을 쉽게 통합할 수 있게 설계되어 있습니다. "의존성 주입"이란 무엇인가 "의존성 주입"은, 프로그래밍에서, 작동을 위해 필요로 하는 걸 코드 (이 경우, 경로 동작 함수) 에 선언하거나 "의존성"을 사용하는 방법을 의미합니다. 그리고, 그 시스템 (이 경우 FastAPI) 은 (의존성을 "주입"하여) 코드에 필요한 의존성을 제공하는 데 필요한 모든 일을 처리합니다. 이것은 다음과 같은 상황에 유용합니다: 로직 공유 (동일한 코드 로직의 반복). 데이터베이스 연결 공유. 보안, 인증, 역할 요구 사항, 기타 등등 강요. 그리고 ..
[ Next.js ] AWS S3를 통한 정적 웹 사이트 배포 및 GitHub Actions를 통한 CI/CD
[ Next.js ] AWS S3를 통한 정적 웹 사이트 배포 및 GitHub Actions를 통한 CI/CD
2021.10.05도입 이 글을 통해 AWS IAM, AWS S3, AWS CloudFront, AWS Route53, ACM(AWS Certification Manager)을 활용해 Next.js 프로젝트를 정적 웹 사이트로 배포하고 GitHub Actions를 활용하여 해당 배포를 자동화하는 방법에 대해 배웁니다. 그리고 이 과정에서 GitHub Actions 및 배포 방식 중 하나인 CI/CD에 관한 기초적인 개념을 익힐 수 있습니다. 참고 이 글에 사용된 모든 소스 코드는 맨 아래 참고 부분에 있는 GitHub 레포지토리에서 확인할 수 있습니다. 배울 수 있는 것과 배울 수 없는 것, 그리고 유의사항을 각각 정리하면 아래와 같습니다. 해당 글을 통해 배울 수 있는 것은 아래와 같습니다. AWS IAM을 통한 사용자..
[ FastAPI ] 바디 - 수정
[ FastAPI ] 바디 - 수정
2021.10.03PUT 을 사용한 대체를 위한 수정 아이템을 수정하기 위해 HTTP PUT 동작을 사용할 수 있습니다. 입력 데이터를 (예를 들어 NoSQL 데이터베이스와 사용하기 위해) JSON으로 저장될 수 있게 변환되도록 jsonable_encoder 를 사용할 수 있습니다. 예를 들어, datetime 을 str 로 변환하는 것입니다. PUT 는 존재하는 데이터를 대체하는 데이터를 전달 받을 때 사용됩니다. 대체 관련 주의사항 이것은 만약 PUT 을 사용하여 아이템 bar 를 수정하고 싶을 때 바디에 포함되어야 할 것은 아래와 같습니다: 왜냐하면 이미 저장되어 있는 어트리뷰트 "tax": 20.2 는 포함하지 않고, 입력 모델은 기본 값 "tax": 10.5 을 취하기 때문입니다. 그리고 데이터에 "새로운" ta..
[ FastAPI ] JSON 호환 부호화
[ FastAPI ] JSON 호환 부호화
2021.10.03(Pydantic 모델 처럼) 데이터 자료형을 ( dict , list , 기타 등등과 같은) JSON과 호환 가능한 것으로 전환해야 할 때가 있습니다. 예를 들어, 데이터베이스에 이것을 저장해야 할 때입니다. 이를 위해, FastAPI는 jsonable_encoder() 함수를 제공합니다. jsonable_encoder 함수 오로지 JSON과 호환 가능한 데이터만 전달 받은 데이터베이스 fake_db 가 있다고 상상해봅시다. 예를 들어, JSON과 호환되지 않기 때문에, datetime 객체를 전달 받지 않습니다. 따라서, datetime 객체는 ISO 구성 방식에 해당하는 데이터를 포함한 str 로 변환되어야만 합니다. 동일한 방법으로, 데이터베이스는 (어트리뷰트를 사용하는 객체인) Pydantic ..
[ 토스 디자인 컨퍼런스 ] Simplicity 21: 3일차 내용 정리
[ 토스 디자인 컨퍼런스 ] Simplicity 21: 3일차 내용 정리
2021.10.01도입 이번 2021년 8월 30일 월요일부터 9월 2일 목요일까지, 4일 동안 토스에서 Simplicity 21이라는 주제로 디자인 컨퍼런스를 진행한다. 아래는 해당 컨퍼런스에서 공개한 영상 내용을 정리하고 관련된 개인 의견을 작성한 글로, 오늘은 3일차 영상 관련 글이다. 1-2일차 영상 관련 글의 경우 아래 URL을 클릭해서 확인해볼 수 있다. 2021.08.30 - [강연 및 컨퍼런스/디자인] - [ 토스 디자인 컨퍼런스 ] Simplicity 21: 1일차 내용 정리 [ 토스 디자인 컨퍼런스 ] Simplicity 21: 1일차 내용 정리 도입 이번 2021년 8월 30일 월요일부터 9월 2일 목요일까지, 4일 동안 토스에서 Simplicity 21이라는 주제로 디자인 컨퍼런스를 진행한다. 아래는..
[ FastAPI ] 경로 동작 구성
[ FastAPI ] 경로 동작 구성
2021.10.01아래는 경로 동작 데코레이터를 구성할 때 전달할 수 있는 매개변수들입니다. 주의 이 매개변수들은 경로 동작 함수가 아닌, 경로 동작 데코레이터로 바로 전달된다는 것을 명심하기 바랍니다. 응답 상태 코드 경로 동작의 응답 내부에 사용하기 위한 (HTTP) status_code 를 정의할 수 있습니다. 404 처럼, int 를 바로 전달할 수 있습니다. 그러나 각각의 숫자 코드가 무엇에 관한 것인지 기억나지 않는다면, status 에 있는 손쉬운 상수를 사용할 수 있습니다: 이 상태 코드는 응답 내부에서 사용되며 OpenAPI 스키마에 추가됩니다. 기술적 세부사항 from starlette import status 를 사용할 수 있습니다. FastAPI는 개발자의 편의성을 위해 starlette.status..
[ FastAPI ] 오류 처리
[ FastAPI ] 오류 처리
2021.09.30API을 사용하는 클라이언트에 오류를 알려야 하는 상황이 많이 있습니다. 이 클라이언트는 프론트엔드인 브라우저는 물론 IoT 기기, 기타 등등 다른 곳의 코드가 될 수도 있습니다. 클라이언트에 아래와 같은 내용을 알려줘야 합니다: 클라이언트는 해당 작업에 대한 충분한 권한이 없습니다. 클라이언트는 자원에 접근할 수 없습니다. 클라이언트가 접근하고자 시도하는 아이템이 존재하지 않습니다. 기타 등등. 이러한 경우, 보통 400 범위 내 (400부터 499까지) HTTP 상태 코드를 반환합니다. 이것은 (200부터 299까지의) 200 HTTP 상태 코드에도 유사합니다. "200" 상태 코드는 요청이 어떻게든 "성공"했다는 걸 의미합니다. 400 범위 내의 상태 코드는 클라이언트에 오류가 있다는 걸 의미합니다..
[ TWIL ] 2기 3회차 회고
[ TWIL ] 2기 3회차 회고
2021.09.30작성 글 3회차에는 FastAPI를 사용하기 이전 기본적으로 알아야 할 웹 관련 지식들을 정리하여 작성해보았다. 클라이언트와 서버, URL과 도메인, API와 엔드포인트, 그리고 HTTP 통신의 기초라 할 수 있는 상태 메서드와 상태 코드에 관해서 정리했는데 자세한 내용은 아래 글에서 확인할 수 있다. [ 공식 문서로 배우는 FastAPI & SQLModel ] 03. 클라이언트와 서버, URL과 도메인, API와 엔드포인트, 그리고 HTTP 통신 [ 공식 문서로 배우는 FastAPI & SQLModel ] 03. 클라이언트와 서버, URL과 도메인, API와 엔드포인트, 그 도입 지난 시간 우리는 실제로 fastapi 를 사용하여 서버를 열고 일련의 요청(Request)과 응답(Response)을 확인..