티스토리 뷰
Python(파이썬)
-> 귀도 반 로섬이 개발한 쉽고 간결한 문법을 가진 프로그래밍 언어
Flask
-> 파이썬으로 웹 서버를 만들기 위한 마이크로 웹 프레임워크
// 복잡한 도구 없이 최소한의 기능만 제공
# Flask에 /hello 만들고 브라우저에서 요청 보내면 화면에 나오도록 해보기
(mac기준)
VS Code 터미널
-> python3 -m venv venv (venv 폴더 생성)
-> pip3 install flask (Flask 설치)
-> 코드 작성

서버 실행 및 확인
터미널에 python3 app.py를 입력 (venv폴더에 넣으면 안 됨)
터미널에 Running on http://127.0.0.1:5000 이라는 문구가 뜨면
브라우저 열고 주소창에 http://127.0.0.1:5000/hello 를 입력
화면에 **Hello, Flask!**가 나오면 성공

# API(Application Programming Interface)
-> 컴퓨터와 컴퓨터, 혹은 프로그램 간에 소통하기 위한 약속(인터페이스)
-> 식당 비유 // 손님(클라이언트)가 메뉴판(API 사양) 보고 점원(API 서버)에게 주문
API : 서버가 어떤 특정한 서비스를 버튼화 시킨 것 (이전 정리 ver)
# HTTP 주요 메소드(서버에 요청)
1. GET (데이터 조회, Read)
-> 서버에서 데이터를 가져올 때 사용
-> 바디 없음 (보통 URL에 파라미터 포함)
-> 여러번 요청해도 결과 동일(멱등성 있음)
-> 캐싱 가능(성능 최적화)
// URL에 데이터가 그대로 노출됨 -> 민감한 정보는 GET으로 보내면 안 됨
<조회 API 전부 - 게시글 목록, 유저 정보 등>
ex. /users?id=1
// ?id=1 -> 파라미터임
// 멱등 : 같은 요청을 여러 번 보내도 결과가 똑같음
2. POST (데이터 생성, Create)
-> 서버에 새 데이터를 생성할 때 사용
-> 요청 바디 사용(JSON 등)
-> 여러번 요청하면 중복 생성 가능(멱등성 없음)
-> 캐싱 안 함
<회원가입, 글 작성, 결제 요청 등>
ex. POST /users
Body: { "name": "kim" }
// 데이터가 요청 바디 안에 들어감
3. PUT (데이터 전체 수정, Replace) // 리소스 아예 갈아치울 때
4. PATCH (데이터 일부 수정) // 이름, 나이 등 특정 부분만 수정할 때
5. DELETE (데이터 삭제) // 리소스 제거, 멱등성 있음
# HTTP 데이터 전송 방식 (Content-Type)
1. query string
GET /users?id=1name=kim
-> URL에 붙어서 전달
-> 주로 GET 요청
-> Content-Type 없음 (URL 파라미터)
2. application/x-www-form-urlencoded
POST /users
id=1&name=kim
-> HTML form 기본 방식
-> key=value 형태
// 공백은 +로, 특수문자는 인코딩해서 전송
(ex. '@' -> '%40', '&' -> '%26'으로 변환)
3. multipart/form-data
POST /upload
(file + text 섞어서 전송)
-> 파일 업로드용
-> 데이터가 여러 파트로 나뉨
-> 이미지, 파일 포함 가능
4. application/json
POST /users
Body: { "id": 1, "name": "kim" }
-> 가장 많이 사용 (REST API 표준)
-> 구조화된 데이터 전달
// 프론트 ↔ 백엔드 기본 방식
# Flask에서 받는 방식 차이
| 전송 방식 | Content-Type | Flask에서 받기 |
| query string | 없음 | request.args |
| form-urlencoded | application/x-www-form-urlencoded | request.form |
| multipart/form-data | multipart/form-data | request.form, request.files |
| JSON | application/json | request.json |
#추가과제
Gemini API키 발급을 받아서, Flask에서 Gemini 이용해서 메세지 주고 받는걸 간략한 API (형태로) 구현
// Gemini를 직접 쓰는 게 아니라 Flask 서버가 중간에서 API 역할을 하는 구조
1. Gemini API 키 발급
// Google AI Studio 접속 -> Get API Key (키 생성 후 복사)
2. Flask 서버 만들기
// 라이브러리 설치(Gemini 통신을 위한)
pip3 install google-generativeai python-dotenv
// app.ay와 같은 폴더에 .env 파일 만들고 발급받은 키 넣어줌
GEMINI_API_KEY=여기에_발급받은_실제_키_입력
3. 메시지 주고받는 API 구현

4. API 테스트 (작동 구조)
Flask 서버를 실행(python3 app.py)한 뒤, POST 메소드로 테스트를 진행
-> Extensions에서 Postman 설치 (왼쪽 사이드바 로고 아이콘 생김)
-> 로그인 후 새로운 요청 만들기 (매소드를 GET -> POST로 변경)
-> URL 입력창에 http://127.0.0.1:5000/api/chat을 입력
// 내 컴퓨터(127.0.0.1)의 수많은 프로그램 중 5000 포트로 들어가서, 그 안의 /api/chat이라는 기능을 찾아가는 경로
데이터(Body) 담기:
입력창 아래 탭 중에서 **[Body]**를 선택
형식을 **raw**로 선택 -> 오른쪽 끝의 드롭다운에서 **JSON**을 선택
아래 내용을 입력창에 넣기
{
"message": "안녕! API 연결 테스트 중이야."
}
보내기(Send):
오른쪽의 파란색 [Send] 버튼을 누르기
하단 Response 창에 Gemini의 답변이 담긴 JSON 데이터가 나오면 성공
[문제해결]
계속 아래와 같은 에러 메시지 뜸.
{
"error": "404 models/gemini-1.5-flash is not found for API version v1beta, or is not supported for generateContent. Call ListModels to see the list of available models and their supported methods."
}
gpt랑 gemini한테 물어봐도 해결이 안 되서
에러메시지 영어로 구글링 함.
해외 개발자 사이트 댓글 보고 해결함.
" the gemini-1.5 are close, but, modelos, 2.5-flash, 2.5 pro, 2.0.flash working "
위 코드에서 모델만 2.5 flash로 변경.
model = genai.GenerativeModel('gemini-2.5-flash')
2.0-flash는 전에도 시도 해봤었고, 재시도에서도 안 됨
확인 결과 2.5-flash랑 2.5-pro는 작동함

'AI스쿨 > 알토르과정' 카테고리의 다른 글
| [알토르] 6주차 과제 : AWS EC2 생성 & Nginx 설치 (0) | 2026.04.09 |
|---|---|
| [알토르] 5주차 추가과제 : Gemini API 프론트엔드 연결 및 채팅 UI 구현 (0) | 2026.04.05 |
| [알토르] 5주차 과제 : (1) 도메인 구매 & Vercel 연동 (0) | 2026.03.31 |
| [알토르] 4주차 과제 : Github와 Vercel 연동 (1) | 2026.03.27 |
| [알토르] 3주차 과제 : 포트폴리오 웹사이트 제작 (0) | 2026.03.22 |
