Back-End(7)
-
Axum 시작하기
개요 Rust로 웹 개발을 하기 위해서는 다양한 프레임워크들이 존재합니다. 그중에서도 요즘 가장 핫한 프레임워크 중 하나는 Axum입니다. Axum은 비동기 웹 애플리케이션을 개발하기 위한 라이브러리이며, Rust의 비동기 프로그래밍 기능을 활용하는 구조로 되어 있습니다. Rust에서 비동기로 유명한 tokio라는 크레이트가 있는데 tokio에서 만든 웹 프레임워크 입니다. 핵심 기능들 1. 타입 안전성: 모듈 간의 상호작용에서 컴파일 타임에 버그를 최대한 줄여주는 타입 안전성을 제공합니다. 2. 모듈화된 구성: 작은 단위로 쉽게 구성을 나누고 조합할 수 있어 비대해진 웹 서비스를 유지하기 쉽습니다. 3. 익스프레션(objected) 스타일 라우팅: Axum은 간결하고 사용하기 쉬운 라우팅을 위해 신작된..
2023.06.20 -
JWT의 Access Token과 Refresh Token
소개 JWT를 사용하여 로그인을 구현하게 되면 아래와 같은 문제점에 부딪히게 됩니다. Token 방식의 인증은 제 3자에게 탈취 당할 경우 보안에 매우 취약합니다. 보안 상의 이유로 Access Token의 만료기간을 짧게 가진다면 사용자는 Token이 만료 될 때마다 매번 로그인을 새롭게 해야합니다. 만료기간을 늘리면, Token을 탈취 당했을 때 보안에 더 취약해집니다. 유효기간을 짧게 하면서 좋은 방법이 있을까?라는 질문에 답은 바로 Refresh Token을 사용하는 방법 입니다. Access Token과 Refresh Token의 재발급 원리 1. 로그인을 하게 되면 Access Token과 Refresh Token을 모두 발급합니다. Refresh Token은 서버쪽에서 DB에 저장하며, 클라..
2023.06.02 -
JWT(Json Web Token)
소개 개발을 하다 보면 로그인 관련 기능을 만드는 경우가 많습니다. 로그인은 쿠키(Cookie), 세션(Sessions) 등으로 많이 구현하는데, 토큰(Token)을 사용하는 방법도 있습니다. 토큰을 사용하는 방법 중 JWT를 많이 사용하기에 JWT에 대해 정리하려고 합니다. JWT JWT(JSON Web Token)는 일반적으로 클라이언트(App FrontEnd)와 서버(App BackEnd)간에 정보를 공유하는 데 사용되는 개방형 산업 표준(RFC7519)입니다. JWT는 Token 자체를 정보로 사용하는 Self-Contained 방식이며, 필요한 모든 정보를 Token에 저장하기 때문에 서버와의 커뮤니케이션에서 오버헤드를 최소화 할 수 있습니다. 또한 JSON Content(JWT Claim이라고..
2023.06.02 -
FastAPI 실행하기
소개 이번 포스트는 FastAPI를 python 코드로 실행하고 확인하는 방법에 대해 설명합니다. 시작하기 FastAPI는 실행 방법이 두가지 있습니다. python에서 uvicorn 모듈을 사용하여 직접 실행하는 방법과 디버깅을 위해 main 함수에 uvicorn 실행 코드를 넣는 방법 입니다. 직접 실행 아래와 같이 main.py 파일에 코드를 입력 합니다. from fastapi import FastAPI app = FastAPI() @app.get("/") async def root(): return {"message": "Hello World"} 위 코드는 FastAPI의 간단한 코드 입니다. VS Code에서 F5를 눌러 실행시키면 서비스가 실행 되지 않고 바로 종료가 됩니다. 실행 시키기 위..
2023.04.19 -
FastAPI Docker 이미지 제작
소개 이번 포스트는 FastAPI 서비스를 Docker Image로 만들어 띄우는 방법에 대해 소개합니다. main.py 생성 main.py 파일을 생성하여 기본 코드를 작성합니다. from fastapi import FastAPI app = FastAPI() @app.get("/") def root(): return {"hello root"} @app.get("/world") def world(): return {"hello world"} 해당 코드는 /로 접속하면 [hello root]가 출력 되고 /world로 접속하면 [hello world]가 출력 되는 간단한 프로그램입니다. pip 모듈 정의 pip는 필요 모듈을 따로 정의하여 자동으로 패키지 추가가 가능합니다. requirements.txt ..
2023.04.19 -
FastAPI의 Type hits
https://fastapi.tiangolo.com/ko/python-types/ Python Types란 FastAPI는 Python의 type hints를 사용합니다. python은 기본적으로 동적(dynamic)프로그래밍 언어로써 인터프리터(interpreter)가 코드를 실행하면서 Type을 추론하여 체크하기 때문에 Type이 고정되어 있지 않습니다. FastAPI에서는 type을 선언하여 사용하므로 Editor와 Tools에서 디버깅에 대해 더 나은 경험을 제공 할 수 있습니다. 인텔리센스(IntelliSense) 지원 def get_full_name(first_name, last_name): full_name = first_name.title() + " " + last_name.title() ..
2023.04.19