Python/[책] 이코테

개발형 코딩테스트

spring_sunshine 2022. 5. 20. 14:51

서버와 클라이언트

  • 클라이언트가 요청을 보내면 서버가 응답한다.
  • 웹 클라이언트: PC, 노트북, 스마트폰 / 웹 서버: 워크스테이션

클라이언트 

  • 서버로 요청(Request)을 보내고 응답(Response)이 도착할 때까지 기다림
  • 서버로부터 응답을 받은 뒤에는 서버의 응답을 화면에 출력한다. 
  • ex) 웹 브라우저: 서버로부터 받은 HTML, CSS코드를 화면에 적절한 형태로 출력한다. 

서버 (서비스 제공자)

  • 클라이언트에게 받은 요청(Request)을 처리하여 응답(Response)을 전송한다.
  • ex) 웹 서버: 로그인 요청을 받아 아이디, 비밀번호가 정확한지 검사하고 결과를 응답한다.

HTTP(HyperText Transfer Protocol)

  • 웹 상에서 데이터를 주고받기 위한 프로토콜이다.
  • 보통은 웹 문서(HTML 파일)를 주고받을 때 사용되고, 모바일 앱과 게임 등에서 특정 형식의 데이터를 주고받는 용도로도 사용된다.
  • 클라이언트는 요청의 목적에 따라 적절한 HTTP 메서드를 이용하여 통신을 진행한다.
    • HTTP 메서드
      • GET: 특정 데이터의 조회 요청 ex) 특정 페이지 접속, 정보 검색
      • POST: 특정 데이터의 생성 요청 ex) 회원가입, 글쓰기
      • PUT: 특정 데이터의 수정 요청 ex) 회원 정보 수정
      • DELETE: 특정 데이터의 삭제 요청 ex) 회원 정보 삭제 

 

파이썬 웹 요청 예제: GET 방식 

import requests

target = "http://google.com"
response = requests.get(url=target)
print(response.text)
  • "http://google.com"에 GET 방식으로 접근하여 구글 웹서버로부터 html 코드를 받아온다.
  • 크롬, firefox 등은 위에서 받아오는 코드들을 보기 좋게 가공하여 우리에게 홈페이지로 보여준다. 

카카오 2차 코딩 테스트 안내문

오프라인 코딩 테스트에서는 JSON format의 데이터를 응답하는 REST API를 활용해야 하니, REST API 호출과 JSON format 데이터를 파싱하여 활용할 수 있는 parser 코드를 미리 준비해 오시기 바랍니다.

→ 핵심 키워드: REST API, JSON

 

REST 등장 배경 

  • HTTP는 GET, POST, PUT, DELETE 등의 다양한 HTTP 메서드를 지원한다.
  • 실제로는 서버가 각 메서드의 기본 설명을 따르지 않아도 프로그램을 개발할 수 있으나, 저마다 다른 방식으로 개발하면 문제가 되기 때문에 기준이 되는 아키텍처가 필요하다.

REST(Representational State Transfer)

  • REST는 각 자원에 대해 자원 상태에 대한 정보를 주고받는 개발 방식을 의미한다.
  • REST의 구성 요소
    • 자원(Resource): URI 이용
    • 행위(Verb): HTUP 메서드 이용 
    • 표현(Representaions): 페이로드 이용

[ 클라이언트 → 서버 ]

사용자 회원등록을 하고 싶습니다. 아이디는 gildong123으로, 비밀번호는 1234!@#로 하고 싶어요.

URI: https://www.example.com/users
HTTP Method: POST
Payload: {"id", "gildong123", "password": "1234!@#"}

 

REST API란?

  • API(Application Programming Interface)는 프로그램이 상호작용하기 위한 인터페이스를 의미한다. 
  • REST API: REST 아키텍처를 따르는 API를 의미한다.
  • REST API 호출: REST 방식을 따르고 있는 서버에 특정 요청을 전송하는 것을 의미한다. 

JSON

  • JSON(JavaScript Object Notation): 데이터를 주고받는 데 사용하는 경량의 데이터 형식 
  • JSON 데이터는 키와 값의 쌍으로 이루어진 데이터 객체를 저장한다. 
{
	"id": "gildong123",
    "password", "1234!@#",
    "age": 30,
    "hobby": ["football", "programming"]
}

 

JSON 객체 사용 예제

import json

# 사전(dict) 자료형 데이터 선언 
user = {
	"id": "gildong123",
    "password", "1234!@#",
    "age": 30,
    "hobby": ["football", "programming"]
}

# 파이썬 변수를 JSON 객체로 변환 
json_data = json.dumps(user, indent=4)
print(json_data)
## 결과
{
	"id": "gildong123",
    "password", "1234!@#",
    "age": 30,
    "hobby": [
    	"football", 
        "programming"
     ]
}

 

REST API를 호출하여 회원 정보를 처리하는 예제

import requests

# REST API 경로에 접속하여 응답 데이터 받아오기
target= "https://jsonplaceholder.typicode.com/users"
response= requests.get(url=target)

# 응답 데이터가 JSON 형식이므로 바로 파이썬 객체로 변환
data= response.json()

# 모든 사용자 정보를 확인하며 이름 정보만 삽입
name_list = []
for user in data:
	name_list.append(user['name'])
    
print(name_list)