전체 글 387

웹 기반 사용자 인터페이스(UI), Swagger

웹 기반 사용자 인터페이스(UI), SwaggerFastAPI에서 제공하는 Swagger는 API 문서를 자동으로 생성해 주는 웹 기반 사용자 인터페이스(UI)입니다.API를 설명하고, 직접 테스트까지 할 수 있는 편리한 도구입니다.✅ Swagger란?웹 API의 기능을 시각적으로 보여주는 도구API 요청 방법과 응답 구조를 자동으로 문서화직접 버튼 클릭으로 요청을 보내고 결과를 확인할 수 있음FastAPI는 Swagger를 내장하여 별도 설정 없이 /docs 주소에서 바로 제공📌 Swagger의 주요 기능기능 설명API 목록 보기모든 경로(GET, POST 등)를 한눈에 확인 가능입력 필드 자동 생성필요한 데이터 형식을 자동으로 표시버튼 클릭 테스트코드 작성 없이 API 실행 가능응답 확인응답 데이터..

FastAPI 기초 교육 자료 (입문 실습용)

🏷️ FastAPI 기초 교육 자료 (입문 실습용)📌 학습 목표FastAPI 웹 서버를 실행할 수 있다.URL 경로를 만들고 응답 메시지를 작성할 수 있다.JSON 형식의 데이터를 주고받을 수 있다.Swagger UI를 통해 API를 테스트할 수 있다.1. FastAPI란?Python으로 만든 빠르고 쉬운 웹 프레임워크웹 브라우저나 앱과 데이터를 주고받는 API 서버 구축에 최적화문서 자동 생성 (Swagger, Redoc)2. 프로젝트 기본 구조📁 예제 디렉터리 구조my_project/├── main.py ← 여기에 서버 코드 작성3. 예제 코드 작성하기main.py 파일에 아래와 같이 작성합니다.from fastapi import FastAPIfrom pydantic import ..

FastAPI 접속 오류 해결

FastAPI 접속 오류 해결브라우저에서 해당 앱에 접속하려고 하자 "사이트에 연결할 수 없음" (ERR_CONNECTION_REFUSED) 오류가 발생하고 있습니다.✅ 현재 상황 요약FastAPI 앱은 uvicorn을 통해 다음 주소에서 실행됨:http://127.0.0.1:8000그러나 Windows 호스트에서 가상머신 서버(192.168.142.200:8000) 로 접속하려 하여 연결 거부됨.즉, 서버는 127.0.0.1 (자기 자신) 만 허용 중이고, 외부(호스트 PC)에서는 접근할 수 없음.✅ 해결 방법✔ 1. Uvicorn 실행 시 호스트를 0.0.0.0으로 지정현재는 127.0.0.1에서만 접속을 허용하고 있어서 외부에서 접근이 안 됩니다. 다음 명령어로 실행해 주세요:uvicorn main..

conda로 가상환경 새로 만들기

✅ conda로 가상환경 새로 만들기1. 가상환경 생성conda create -n fastapi-env python=3.11fastapi-env는 가상환경 이름입니다. 원하는 이름으로 바꾸셔도 됩니다.python=3.11은 사용할 Python 버전입니다. 필요에 따라 3.10, 3.9 등도 가능합니다.2. 가상환경 활성화conda activate fastapi-env활성화되면 프롬프트 앞에 (fastapi-env)처럼 가상환경 이름이 보입니다.3. 필요한 패키지 설치pip install fastapi uvicornFastAPI와 서버 구동용 Uvicorn을 함께 설치합니다.✅ FastAPI 실행 예시작업 디렉터리로 이동한 뒤, FastAPI 프로젝트를 실행하세요:uvicorn main:app --relo..

12. 딕셔너리 메서드와 실전 활용

📘 Day 12. 딕셔너리 메서드와 실전 활용1. 딕셔너리 주요 메서드메서드 설명 예시get(key, default)key로 값 검색. 없으면 기본값 반환d.get("score", 0)keys()key 목록 반환d.keys()values()value 목록 반환d.values()items()(key, value) 쌍 목록 반환d.items()update(other_dict)다른 딕셔너리와 병합d.update(d2)pop(key)key로 항목 삭제 후 value 반환v = d.pop("name")clear()전체 항목 삭제d.clear()copy()얕은 복사d2 = d.copy()❗ get()은 안전하게 값을 검색할 때 유용하며, 존재하지 않는 key를 조회해도 오류가 발생하지 않음.🔁 깊은 복사 (de..

11. 딕셔너리(dict)의 개념과 활용

📘 Day 11. 딕셔너리(dict)의 개념과 활용1. 딕셔너리란?여러 데이터를 key: value 쌍으로 저장하는 시퀀스 자료형**가변형(mutable)**이며, 리스트처럼 자유롭게 값을 추가, 수정, 삭제할 수 있음인덱싱 불가, 반드시 key를 통해 접근key는 중복 불가, 불변형(immutable) 자료형만 가능 (예: str, int, tuple)value는 어떤 자료형이든 저장 가능2. 딕셔너리 생성 방법# 1. 중괄호를 이용한 생성student = { "name": "홍길동", "age": 18, "grade": "A"}# 2. dict() 함수를 이용한 생성info = dict(name="이몽룡", age=20)3. 딕셔너리의 특징항목 설명데이터 형식{key: value}순..

10. 리스트 복사와 고급 활용

📘 Day 10. 리스트 복사와 고급 활용1. 리스트 복사 방법✅ 전체 복사 방법방법 설명[:]전체 슬라이싱 복사list()생성자를 이용한 복사.copy()리스트 메서드를 이용한 복사a = [1, 2, 3]b = a[:] # 슬라이싱c = list(a) # list 함수d = a.copy() # copy 메서드모두 얕은 복사(shallow copy)에 해당→ 리스트 안에 중첩 리스트가 있다면 내부 요소는 공유됨🔁 깊은 복사(Deep Copy)중첩 리스트까지 완전히 복사할 때 사용copy 모듈의 deepcopy() 함수 사용import copya = [[1, 2], [3, 4]]b = copy.deepcopy(a)2. 리스트 비교같은 인덱스의 값을 하나씩 비교값..

09. 리스트의 활용과 정렬

📘 Day 09. 리스트의 활용과 정렬1. 중첩 리스트(Nested List)리스트 내부에 또 다른 리스트를 요소로 포함하는 구조l = [ [1, 2], [3, 4] ]값 접근 방법:print(l[0]) # [1, 2]print(l[0][0]) # 1print(l[1][1]) # 4중첩 정도에 따라 인덱스를 연달아 사용하여 내부 값에 접근2. 리스트 메서드(method)➕ 값 추가메서드 설명 예시append(x)마지막에 값 추가lst.append(10)insert(i, x)i번째 위치 앞에 값 삽입lst.insert(1, 20)append()는 리스트 끝에 무조건 추가insert()는 특정 위치에 값 삽입 (기존 요소는 뒤로 밀림)✏️ 값 변경인덱싱으로 변경lst[0] = 1..

08. 리스트(list)

📘 Day 08. 리스트(list)1. 리스트란?여러 값을 순서대로 저장하는 시퀀스 자료형가변형(mutable)으로 값을 자유롭게 추가, 삭제, 변경할 수 있음파이썬에서 가장 많이 사용하는 자료형 중 하나2. 리스트 생성 방법# 대괄호를 이용한 생성fruits = ['apple', 'banana', 'cherry']# list() 함수를 이용한 생성 (다른 시퀀스를 변환)numbers = list((1, 2, 3))# 빈 리스트 생성empty_list = []3. 리스트의 주요 연산📌 인덱싱(Indexing)a = [10, 20, 30]print(a[0]) # 10print(a[-1]) # 30 (역순 인덱스)위치를 통해 요소에 접근하거나 수정 가능a[1] = 25 # 값 변경..

07. 문자열(str)과 튜플(tuple)

📘 Day 07. 문자열(str)과 튜플(tuple)1. 문자열(str) 심화🔄 시퀀스 자료형의 반복str, list, tuple 등 시퀀스 자료형은 **반복자(iterator)**를 내장하고 있어 for문을 통해 값을 하나씩 순회할 수 있음인덱스를 함께 사용하려면 enumerate() 함수를 활용text = "Python"for index, char in enumerate(text): print(index, char)🔧 문자열 메서드(method)문자열은 객체이므로, 메서드를 통해 다양한 처리를 수행할 수 있음메서드는 일시적으로 값을 처리하며, 원본 문자열은 변하지 않음s = "Hello Python"print(s.upper()) # HELLO PYTHONprint(s.find("P"..