Chapter 8: 양방향 통신을 위한 웹소켓 in FastAPI | “Building Data Science Applications with FastAPI”의 챕터 8을 공부하며 정리한 내용입니다. HyperText Transfer Protocol (HTTP)는 서버에 데이터를 보내고 받기에 간편하지만 강력한 기술이다. 하지만 채팅과 같은 양방향 소통이 중요한 경우 HTTP로 구현한다면 상당히 불편함이 따른다. 짧은 시간 내에 많은 요청과 응답을 만들어야 하기에, 자원 낭비가 심할 것이다. 이러한 HTTP 단점 때문에 새로운 프로토콜 웹소켓(WebSocket)이 인기를 끌고 있다. 이 프로토콜의 목표는 client와 server 사이에 communication channel을 열어서 그들이 실시간으로 ..
Chapter 7: FastAPI에서의 인증과 보안 “Building Data Science Applications with FastAPI”의 챕터 7을 공부하며 정리한 내용입니다. API에는 모든 이가 접근할 수 있는 Public API도 있지만, 인증된 사용자들만 접근 가능한 API가 대부분이다. 따라서 private token으로 접근성을 낮추거나, 적절한 인증 시스템을 구축해야 한다. 이 챕터에서는 FastAPI가 제공하는 보안과 관련된 의존성에 대해 다룬다. 또한 웹 브라우저에서 발생하는 CORS와 CSRF 공격에 대해서도 다룬다. 세부적인 내용들은 아래와 같다. Security dependencies in FastAPI Retrieving a user and generating an acces..
| "Building Data Science Applications with FastAPI"를 읽고 정리한 글입니다. Tortoise ORM 사용하기 ORM 툴을 사용하는 이유: 관계형 DB를 다룰 때, SQL 개념을 추상화하고, 오직 python의 object만 다뤄서 복잡도를 낮추고 싶기 때문이다 Tortoise ORM: Modern and asynchronous ORM Django ORM과 유사하다. 각 DB 엔진에 따른 설치법은 링크에서 확인할 수 있다. DB 모델 생성하기 Tortoise ORM의 역할은 파이썬 객체와 DB의 entity를 연결(link)하는 것이다. class PostTortoise(Model): id = fields.IntField(pk=True, generated=True)..
Chapter 6: 데이터 베이스와 비동기 ORMs “Building Data Science Applications with FastAPI”라는 책을 읽고 정리한 내용입니다. REST API를 만드는 주된 이유: 데이터를 읽고 쓰기 위함. 하지만, 아직 데이터베이스에 대해서는 책에서 다루지 않았음. ORM: Object-Relational Mapping Relational vs NoSQL 데이터베이스 데이터베이스는 체계적으로 데이터를 저장하고, 데이터의 무결성을 유지하며, query language를 통해 필요할 때 데이터를 찾을 수 있도록 해줘야 한다. Relational Database(관계형 데이터베이스): SQL query language NoSQL: Relational DB의 반대 케이스 필요에..
FastAPI 스터디한 것 정리 Building Data Science Applications with FastAPI를 읽으며. Chapter 5: 의존성 주입 의존성 주입 장점 의도가 명확하다. a clear separation of concern between the logic of the endpoint and the more generic logic 명확한 관심의 분리가 가능하다 OpenAPI 스키마가 자동으로 제작되어서 어떤 파라미터가 필요한지 명확히 보여줄 수 있다. can clearly show which parameters are expected Creating and using a function dependency dependency는 function이나 callable class로 정..
장고로 백엔드를 구현하던 중 pylint가 장고의 문법을 오류로 인식하는 것을 확인했다. 사실 이전부터 빨간줄이 그어져 있었지만, 실행에는 이상이 없어서 무시하고 있었다. 하지만 계속 밑줄이 그어지다보니 신경이 쓰였기에 pylint와 충돌하는 것을 해결해보았다. Class 'Article' has no 'objects' memberpylint(no-member) User model imported from django.contrib.auth.modelspylint(imported-auth-user) 이러한 오류들이 발생했는데 아래의 방법으로 해결할 수 있었다. pylinst-django 설치하기 pip install pylint-django 프로젝트의 루트 경로에 .pylintrc 파일 생성 후 아래의 ..
파이썬 개발 환경 pycharm에서 vscode로.. 첫 과제를 위한 준비 학교에서 첫 컴퓨터 비전 과제가 출제되었다. 이떄까지 파이썬 환경에서 pycharm을 사용해왔다. 하지만, pycharm은 내가 주로 사용하는 IDE가 아니었기에 주로 사용하는 vscode에서 파이썬 개발환경을 다시 세팅하고자 하였다. 그 과정에서 파이참에서 제공하던 lint 기능을 위해 vscode에서는 pylint와 black(conda에 없던것으로 기억)을 선택했다. 각각은 pip를 통해 install 하였다. 그리고 conda를 이용하여 python 버전을 3.8로 생성했다. requirements.txt 파일에는 conda에 존재하지 않는 라이브러리가 있어서, 이 또한 pip로 설치하였다. 이후 pip list와 cond..