본문 바로가기
  • think together
카테부 4기 판교 ai 실무/수업내용 & 과제

0518 정규수업2

by hwamgai 2026. 5. 18.

지난 주

  • 파이썬 프로그래밍 언어
  • 내가 뭘 모르는지를 알고, 이야기를 할 수 있어야 한다.

 


 

키워드

http란 무엇인가 / http를 파이썬에서 어떻게 다룰 것인가

 


 

1. 네트워크

  • 데이터를 주고 받기 위해서 
  • 노드(node) : 네트워크에서 데이터를 생성, 수신, 또는 전송하는 장치나 지점 (서버, 클라이언트)
  • 클라이언트(요청의 주체) - 서버(응답의 주체)
  • TCP/IP vs OSI

 

  • socket : 네트워크를 프로그래밍하기 위해 추상화한 것
  • localhost : 자기자신, 이 컴퓨터의 로컬
  • port : 항구, 주소의 일부
    • 주소를 세분화 하는 번호가 port, localhost라는 서버에도 port1, port2, port3 등 여러 개를 가질 수 있다
## server.py
import socket

server_socket = socket.socket(socket.AF_INFT, socket.SOCK_STREAM)

server_socket.bind(('localhost', 12345))

server_socket.listen(1)

client_socket, addr = server_socket.accept()
print(f"addr: {addr}")

client_socket.sendall("hello".encode('utf-8'))

client.socket.close()
server_socket.close()



## client.py
import socket

client_socket = socket

client_socket.connect('localhost', 12345))

data = client_socket.recv(1024)
print(f"data: {data.decode('utf-8')}")

client_socket.close()

위와 같이 코드를 작성하면 <딱 1번만 통신이 가능하다

client는 상관없지만, server를 봤을 때는 server는 다른 client와도 소통해야하고, 계속 열려있어야 한다.

--> (무한) 루프를 활용해서 계속 서버가 켜지게 한다. (예 - 웹서비스 24시간) : 서버는 계속 돌고 있다, 서버는 루프이다.

--> 계속 돌아가야 하니까 전기 소모가 많아진다

 

 

2. 웹 기초 (HTTP)

  • (plain text -> hyper text) hypertext transfer protocol : TCP 위에서의 프로토콜 
  • 글을 뛰어 넘는 글(이미지, 오디오 등)을 전송하는 규약
  • multimedia - jpg, png, HTML, CSS, audio, link (text : html, css, js... / binary : jpg, png...)

 

  • HTTP request message -> request 요청
  • HTTP respinse message -> response 응답

 

  • HTTP의 대표적인 client : browser

 

## http 요청 메세지가 들어왔을 때 파싱하는 코드를 짜보세요
## parser.py

def parse(message):

\r\n\r\n 			#<-- 이걸로 header와 body를 구분(두 번 \r\n을 써야함)
    ....
    ...
    method
    path
    version
    dict(key,value)
    body string
  • HTTP 요청 메소드 (request method)
    • GET(조회), POST(생성), PUT, PATCH, DELETE
  • HTTP 상태 코드
    • 200(성공), 300(리다이렉션 : 도착 주소 재지정), 400(클라이언트 오류), 500(서버 오류)
  • HTTP URL
  • 요청 매개변수 - HTTP 경로 변수와 쿼리 스트링
    • 경로 매개변수
    • 질의 매개변수

파이썬 설치

  • python.org
  • brew install python
  • conda install python
  • venv
  • uv

 

format

  • json
  • xml

 

 

3. FastAPI

  • web framework
  • 스웨거 문서 자동 생성

 


 

한 줄 정리 & 왜 쓰는지

http 항목전체 (http1, http2, http3 (구글, 메타에서의 질문 : http2와 http3의 차이)
json (json에서는 스키마를 잘 짜는게 중요하다 / xml)
rest api (rest, restApi, restful)

 

 

#한 줄 정리

1. HTTP - 글을 뛰어넘는 글(이미지, 오디오 등)을 전송하는 "규약"

2. RestAPI
- 웹에서 데이터를 주고 받을 때 지켜야 하는 "규칙"
- http method를 사용해서 CRUD 작업을 수행
- [교재] (내가 만드는) 애플리케이션과 (이미 만들어진) 애플리케이션이 서로 통신할 수 있도록 정의한 "명세서"
- [교재] 대표적인(REpresentational) 상태(State) 전송(Transfer) API

3. FastAPI
- RestAPI를 작성하기 위한 "도구"
- 파이썬 기반의 웹 프레임워크 (다른 종류로는 Express(javascript), Flask(python), Spring Boot(java) 등이 있음)

4. JSON
- 프로그램끼리 데이터를 주고 받기 위해 사용하는 "텍스트 형식"
- 계층적인 트리/객체 형태 : key-value ( <-> csv : 콤마(,)로 구분된 테이블 형태의 텍스트 형식)

 

과제

1. HTTP 내용 정리

2. FastAPI로 커뮤니티 서비스의 백엔드를 구현해보세요 (HTTP REST API 설계 및 구현)
- 인증기능 x
- 게시글 작성 (제목, 내용, 이미지) -- 이미지 x (파일 x)

================

[과제2 참고]
- 글 작성
POST /posts
{"title" : "제목", "content" : "내용"}

- 응답 성공 200
생성된 글의 번호
{"post_id" : 3}

- 글 목록
GET / posts

- 응답 성공 200
{"id":3, "title":"제목", "content":"내용", 좋아요, 댓글수, 조회수,,,}

- 테스트
유닛 테스트 : 함수 자체의 기능 점검
e2e(end to end) 테스트 : 클라이언트-서버 간의 네트워크 포함 테스트

================

* main.py가 매우 빨리 커진다 --> 어떻게 구분화 할건지 고민해보기

* 서버를 재시동하면 데이터가 날아간다 --> 메모리가 아닌 다른 저장이 필요
1. 파일 (json, csv...)
2. DBMS --> RDBMS

'카테부 4기 판교 ai 실무 > 수업내용 & 과제' 카테고리의 다른 글

0610 정규수업3  (0) 2026.06.10
0513 ~ 0516 키워드  (0) 2026.05.19
0514 심화수업1  (0) 2026.05.16
0513 정규수업1  (0) 2026.05.16
0512 ot  (0) 2026.05.16