IT 기초: 웹과 API
4주 과정, 하루 1시간

IT 기초: 웹과 API

브라우저 주소창에 주소를 치면 무슨 일이 일어나는지부터, curl로 HTTP를 직접 주고받고, 작은 API를 만들어 보고, 구글 클라우드 API를 직접 부르는 데까지 갑니다. 위에서부터 하나씩 체크하세요.

다음 할 일

…

실습 방법 보기
전체 진행0 / 0
진행 상황: 이 브라우저에 저장

공부하는 방법

매일 1시간몰아서 8시간보다 매일 1시간이 오래 남습니다. 과제마다 예상 시간이 적혀 있습니다.
읽기 20%, 손 80%개념을 읽었으면 바로 터미널에서 curl로 직접 요청을 보내 보고, 응답을 눈으로 확인합니다.
일부러 부수기설정을 틀리게 바꾸고, 에러 메시지만 보고 원인을 찾습니다.
소리 내 설명하기단계 끝의 자가 점검에 답을 보지 않고 말해 봅니다. 막히면 그 과제로 돌아갑니다.
맥북에서 실습하기Windows에서 한다면 건너뛰세요

맥에서는 Ubuntu 가상 머신(VM)을 하나 띄워 그 안에서 실습합니다. 그러면 이 사이트의 명령을 Windows(WSL)와 똑같이 쓸 수 있습니다. 사이트에 "WSL Ubuntu 터미널"이라고 나오면 "VM 터미널"로 읽으세요.

  1. Homebrew 설치 (맥용 설치 관리자)회사 맥이면 설치 전에 IT팀 승인을 확인하세요.
    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
  2. Ubuntu 가상 머신 만들고 들어가기Multipass는 무료입니다. 이 VM이 Windows의 WSL 역할을 합니다.
    brew install --cask multipass                                  # 가상 머신 관리 도구 설치
    multipass launch --name ubuntu --cpus 2 --memory 4G --disk 20G  # Ubuntu VM 만들기 (쿠버네티스는 --memory 8G 권장)
    multipass shell ubuntu                                          # VM 터미널로 들어가기
    # 여기서부터 사이트의 "WSL Ubuntu 터미널" 명령을 그대로 실행
  3. 맥 브라우저에서 VM 안의 서비스 열기WSL과 달리 localhost가 자동으로 연결되지 않습니다.
    multipass info ubuntu | grep IPv4  # VM의 IP 확인 (예: 192.168.64.5)
    # 브라우저에서 localhost 대신 http://<VM IP>:<포트> 로 접속
    # kubectl port-forward 는 --address 0.0.0.0 을 붙여야 맥에서 열림
  4. 끝나면 정리VM은 켜 두면 맥의 메모리를 계속 씁니다.
    multipass stop ubuntu            # VM 끄기 (내용은 남음)
    multipass start ubuntu           # 다시 켜기
    multipass delete --purge ubuntu  # 완전히 삭제

Git과 Python은 VM 없이 맥에서 바로 해도 됩니다 (xcode-select --install, brew install python). 서버, 네트워크, DB처럼 리눅스 명령이 나오는 사이트는 VM에서 하세요.

WSL 설치, PowerShell 명령건너뜁니다. 위 2번 VM이 대신합니다.
Apple Silicon(M1 이후) 맥VM에서 uname -m이 aarch64면 다운로드 주소의 amd64를 arm64로 바꿉니다. arm64 버전이 없는 이미지는 exec format error가 날 수 있습니다.
Docker Desktop맥도 큰 회사는 유료입니다. VM 안의 Docker Engine을 쓰고, 맥에서 직접 쓰려면 무료인 Colima를 씁니다.
파일 주고받기multipass transfer 파일 ubuntu: 또는 multipass mount ~/study ubuntu:/home/ubuntu/study
브라우저로 열기localhost 대신 VM IP를 씁니다 (위 3번).

VM 없이 맥에서 바로 하고 싶다면 brew install kubectl kind helm colima docker 로 도구를 깔 수 있습니다. 단, 리눅스 내부(namespace, cgroup, systemd, iptables)를 들여다보는 실습은 VM에서만 됩니다.

처음 보는 용어

클라이언트와 서버요청을 보내는 쪽(브라우저, 앱, curl)이 클라이언트, 요청을 받아 응답을 돌려주는 쪽이 서버입니다.
URL자원의 주소입니다. 스킴(https), 호스트, 포트, 경로, 쿼리(? 뒤), 프래그먼트(# 뒤)로 나뉩니다.
HTTP / HTTPS웹에서 요청과 응답을 주고받는 약속입니다. HTTPS는 TLS로 내용을 암호화한 HTTP입니다.
메서드요청이 무엇을 할지 나타내는 동사입니다. GET 조회, POST 생성, PUT 교체, PATCH 일부 수정, DELETE 삭제.
상태 코드응답 결과를 나타내는 세 자리 숫자입니다. 2xx 성공, 3xx 다른 곳으로, 4xx 요청 쪽 잘못, 5xx 서버 쪽 잘못.
헤더요청과 응답에 붙는 부가 정보입니다. Content-Type(본문 형식), Authorization(인증), Cache-Control(캐시 규칙) 등.
쿠키와 세션쿠키는 서버가 브라우저에 맡기는 작은 값이고, 세션은 그 값(세션 ID)으로 서버가 찾아보는 사용자 상태입니다.
curl터미널에서 HTTP 요청을 보내고 응답을 보는 도구입니다. -i 헤더 포함, -X 메서드, -H 헤더, -d 본문.
JSON객체 {}와 배열 []로 데이터를 적는 텍스트 형식입니다. API 응답에서 가장 많이 씁니다.
jq터미널에서 JSON을 보기 좋게 출력하고 원하는 값만 골라내는 도구입니다.
API프로그램끼리 정해진 방식으로 기능과 데이터를 주고받는 창구입니다. 식당의 주문 창구에 해당합니다.
REST자원을 URL(명사)로, 동작을 HTTP 메서드(동사)로 나타내는 API 설계 방식입니다.
엔드포인트API에서 요청을 받는 주소 하나입니다. 예: GET /v1/memos.
멱등성같은 요청을 여러 번 보내도 결과 상태가 한 번 보낸 것과 같은 성질입니다. GET, PUT, DELETE는 멱등, POST는 아닙니다.
페이지네이션긴 목록을 페이지나 커서 단위로 나눠 주고받는 방식입니다.
API 키와 Bearer 토큰API 키는 앱이나 프로젝트를 식별하는 문자열, Bearer 토큰은 로그인이나 OAuth로 받은 기간 한정 권한 증표입니다.
JWT헤더, 페이로드, 서명 세 조각으로 된 토큰 형식입니다. 내용은 누구나 읽지만 서명 덕분에 위조할 수 없습니다.
OAuth 2.0비밀번호를 넘기지 않고, 범위(scope)가 정해진 액세스 토큰을 받아 API를 부르게 하는 권한 위임 표준입니다.
레이트 리밋호출자별로 일정 시간당 호출 횟수를 제한하는 것입니다. 넘으면 429 Too Many Requests를 받습니다.
OpenAPIREST API의 주소, 메서드, 입력과 출력 형식을 기계가 읽을 수 있게 적는 표준 명세입니다. Swagger UI로 문서 화면을 만듭니다.

계속 쓰게 될 자료