코딩테스트/기타

[개발형 코딩 테스트] REST API & JSON

sujin7837 2021. 11. 9. 17:48
반응형

서버와 클라이언트

클라이언트가 요청(Request)을 보내면 서버가 응답(Response)합니다.

 

클라이언트(Client) = 고객

-서버로 요청(Request)을 보내고 응답(Response)이 도착할 때까지 기다립니다.

-서버로부터 응답을 받은 뒤에는 서버의 응답을 화면에 출력합니다.

  • 예 1) 웹 브라우저 : 서버로부터 받은 HTML, CSS 코드를 화면에 적절한 형태로 출력합니다.
  • 예 2) 게임 앱 : 서버로부터 받은 경험치, 친구 귓속말 정보 등을 화면에 적절한 형태로 출력합니다.

 

서버(Server) = 서비스 제공자

-클라이언트로부터 받은 요청(Request)을 처리해 응답(Response)을 전송합니다.

  • 예 ) 웹 서버 : 로그인 요청을 받아 아이디와 비밀번호가 정확한지 검사하고 그 결과를 응답합니다.

 

HTTP 개요

-HTTP(HyperText Transfer Protocol)는 웹상에서 데이터를 주고받기 위한 프로토콜을 의미합니다.

  • 보통은 웹 문서(HTML 파일)를 주고받는 데 사용됩니다.
  • 모바일 앱 및 게임 개발 등에서 특정 형식의 데이터를 주고받는 용도로도 사용됩니다.

-클라이언트는 요청의 목적에 따라서 적절한 HTTP 메서드를 이용해 통신을 진행합니다.

  • 대표적인 HTTP 메서드는 다음과 같습니다.

 

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

import requests

target = "http://google.com"
response = requests.get(url=target)
print(response.text)

<!doctype html><html itemscope=" "...>

 

개발형 코딩 테스트 준비하기

-다음은 2020 카카오 2차 코딩 테스트 안내문에 쓰여 있던 문장입니다.

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

-개발형 코딩 테스트의 핵심 키워드 : REST API, JSON

 

REST의 등장 배경

-HTTP는 GET, POST, PUT, DELETE 등의 다양한 HTTP 메서드를 지원합니다.

  • 실제로는 서버가 각 메서드의 기본 설명을 따르지 않아도 프로그램을 개발할 수 있습니다.
  • 하지만 저마다 다른 방식으로 개발하면 문제가 될 수 있어 기준이 되는 아키텍처가 필요합니다.

 

REST 개요

-REST(Representational State Transfer)는 각 자원(Resource)에 대하여 자원의 상태에 대한 정보를 주고받는 개발 방식을 의미합니다.

-REST의 구성 요소

  • 자원(Resource) : URI를 이용
  • 행위(Verb) : HTTP 메서드를 이용
  • 표현(Representations) : 페이로드를 이용

 

 

REST API란?

-API(Application Programming Interface) : 프로그램이 상호작용하기 위한 인터페이스를 의미합니다.

-REST API : REST 아키텍처를 따르는 API를 의미합니다.

-REST API 호출 : REST 방식을 따르고 있는 서버에 특정한 요청을 전송하는 것을 의미합니다.

 

JSON

-JSON(JavaScript Object Notation) : 데이터를 주고받는 데 사용하는 경량의 데이터 형식

-JSON 형식을 따르는 데이터 예시는 다음과 같습니다.

{
	"id" : "gildong123",
    "password" : "1!2@3#4$",
    "age" : 30,
    "hobby" : ["football", "programming"]
}

-JSON 데이터는 키와 값의 쌍으로 이루어진 데이터 객체를 저장합니다.

 

JSON 객체 사용 예제

import json

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

# 파이썬 변수를 JSON 객체로 변환
json_data = json.dumps(user, indent=4)
print(json_data)

{
    "id" : "gildong",
    "password" : "1!2@3#4$",
    "age" : 30,
    "hobby" : [

            "football",

            "programming"

    ]
}

 

JSON 객체 파일 저장 예제

import json

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

# JSON 데이터로 변환하여 파일로 저장
with open("user.json", "w", encoding="utf-8") as file:
	json_data = json.dump(user, file, indent=4)

 

REST API 연습용 서비스

-목킹(Mocking)이란 어떠한 기능이 있는 것처럼 흉내내어 구현한 것을 의미합니다.

-가상의 REST API 제공 서비스 : https://jsonplaceholder.typicode.com/ 

 

JSONPlaceholder - Free Fake REST API

{JSON} Placeholder Free fake API for testing and prototyping. Powered by JSON Server + LowDB As of Oct 2021, serving ~1.7 billion requests each month.

jsonplaceholder.typicode.com

 

REST API 호출 실습해보기

-API 호출 경로 : https://jsonplaceholder.typicode.com/users/1

-HTTP 메서드 : GET

{
	"id" : 1,
    "name" : "Leanne Graham",
    "username" : "Bret",
    "email" : "Sincere@april.biz",
    (생략)
}

 

-API 호출 경로 : https://jsonplaceholder.typicode.com/users

-HTTP 메서드 : GET

[
  {
      "id" : 1,
      "name" : "Leanne Graham",
      "username" : "Bret",
      "email" : "Sincere@april.biz",
      (생략)
  },
  {
      "id" : 2,
      "name" : "Ervin Howell",
      "username" : "Antonette",
      "email" : "Shanna@melissa.tv",
      (생략)
  },
  (생략)
]

 

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

import requests

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

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

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

 

 

출처 : 이것이 취업을 위한 코딩 테스트다

반응형