0Pricing
Ruby Academy · 강의

JSON API

JSON을 반환합니다

JSON API은(는) CoddyKit의 무료 Ruby Academy 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Ruby Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Ruby Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

JSON API가 필요한 이유

JSON은 웹 API의 표준 데이터 형식입니다. 클라이언트는 HTML 대신 구조화된 데이터를 주고받습니다.

  • 언어에 독립적입니다.
  • 루비 해시와 배열에 자연스럽게 대응합니다.
  • 가볍고 사람이 읽기 쉽습니다.

루비 표준 라이브러리는 json 모듈을 통해 JSON을 처리합니다.

require 'json'

data = { name: 'Ada', langs: ['Ruby', 'Python'] }
puts data.to_json

루비를 JSON으로 변환하기

해시나 배열에서 to_json을 호출하거나 JSON.generate를 사용하십시오.

  • 심볼과 문자열은 JSON 키가 됩니다.
  • 중첩된 구조도 재귀적으로 변환됩니다.
require 'json'

user = { id: 1, active: true, tags: ['admin'] }
puts JSON.generate(user)

JSON 보기 좋게 출력하기

읽기 쉬운 출력을 만들려면 JSON.pretty_generate를 사용하십시오.

  • 들여쓰기와 줄 바꿈을 추가합니다.
  • 디버깅과 기록에 유용합니다.
  • 바이트를 절약하려면 운영 환경 응답에서는 사용하지 마십시오.
require 'json'

config = { server: { host: 'localhost', port: 4567 } }
puts JSON.pretty_generate(config)

JSON 입력 구문 분석하기

JSON.parse를 사용하여 들어오는 JSON 문자열을 루비 객체로 변환하십시오.

  • 기본적으로 키는 문자열입니다.
  • 심볼 키를 사용하려면 symbolize_names: true를 전달하십시오.
require 'json'

raw = '{"name": "Ada", "age": 30}'
data = JSON.parse(raw)
puts data['name']
puts data['age']

심볼 키

심볼 키는 조회하기 편리하고 약간 더 빠릅니다.

  • symbolize_names: true로 활성화하십시오.
  • 신뢰할 수 없는 입력으로 많은 심볼이 생성되지 않도록 주의하십시오.
require 'json'

raw = '{"city": "Istanbul"}'
data = JSON.parse(raw, symbolize_names: true)
puts data[:city]

Sinatra에서 JSON 반환하기

Sinatra 경로에서는 콘텐츠 유형을 설정하고 JSON 문자열을 반환합니다.

  • content_type :json은 헤더를 설정합니다
  • 본문으로 hash.to_json을 반환합니다
require 'sinatra'
require 'json'

get '/api/status' do
  content_type :json
  { status: 'ok', time: Time.now.to_i }.to_json
end

JSON 요청 본문 읽기

POST API에서는 원시 본문을 읽고 구문 분석합니다.

  • request.body.read는 원시 문자열을 제공합니다
  • JSON.parse로 구문 분석합니다
require 'sinatra'
require 'json'

post '/api/users' do
  payload = JSON.parse(request.body.read)
  content_type :json
  { created: payload['name'] }.to_json
end

API 응답 해시 만들기

직렬화하기 전에 구조화된 해시를 만들어 응답 형식을 일관되게 유지합니다.

  • data 키 아래에 데이터를 넣습니다
  • 상태와 메타데이터를 포함합니다
require 'json'

def api_response(data, status: 'ok')
  { status: status, data: data }.to_json
end

puts api_response({ id: 1, name: 'Ada' })

구문 분석 오류 처리하기

잘못된 형식의 JSON은 JSON::ParserError를 발생시킵니다. 항상 처리해야 합니다.

  • 클라이언트에 400 잘못된 요청을 반환합니다
  • 구문 분석 오류로 앱이 중단되게 해서는 안 됩니다
require 'json'

begin
  JSON.parse('{ broken')
rescue JSON::ParserError => e
  puts "Invalid JSON: #{e.message}"
end

객체 배열 직렬화하기

컬렉션은 자연스럽게 JSON 배열로 직렬화됩니다.

  • 해시 배열은 객체 배열이 됩니다
  • map을 사용해 각 레코드의 형태를 구성합니다
require 'json'

users = [{ id: 1, name: 'Ada' }, { id: 2, name: 'Bob' }]
output = users.map { |u| { name: u[:name] } }
puts output.to_json

객체에 사용자 지정 to_json 정의하기

to_json 또는 as_json을 정의해 클래스가 직렬화하는 방법을 지정할 수 있습니다.

  • 내부 상태를 일반 해시로 변환합니다
  • API에서 비공개 필드를 숨깁니다
require 'json'

class User
  def initialize(id, name)
    @id = id
    @name = name
  end

  def to_json(*)
    { id: @id, name: @name }.to_json
  end
end

puts User.new(1, 'Ada').to_json

빠른 확인

JSON API에 대한 지식을 확인합니다.

복습

JSON API를 만드는 방법을 배웠습니다.

  • 표준 라이브러리에서 require 'json'을 불러옵니다
  • to_json / JSON.generate는 Ruby 객체를 JSON으로 직렬화합니다
  • JSON.parse는 들어오는 JSON을 역직렬화합니다
  • Sinatra 경로에서 content_type :json을 설정합니다
  • 항상 JSON::ParserError를 처리합니다

다음에는 Rack과 미들웨어를 살펴봅니다.

자주 묻는 질문

“JSON API” 강의는 무료인가요?

네 — “JSON API” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Ruby Academy 강의 전체를 잠금 해제할 수 있습니다. Ruby Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“JSON API”에서 뭘 배우나요?

JSON을 반환합니다 브라우저에서 직접 실행하는 실습 코드로 Ruby Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Ruby Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Ruby Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.

“JSON API” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Ruby Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Ruby Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. Sinatra 기초
  2. 경로와 매개변수
  3. JSON API
  4. 미들웨어와 Rack
← Ruby Academy(으)로 돌아가기