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
endJSON 요청 본문 읽기
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
endAPI 응답 해시 만들기
직렬화하기 전에 구조화된 해시를 만들어 응답 형식을 일관되게 유지합니다.
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 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- Sinatra 기초
- 경로와 매개변수
- JSON API
- 미들웨어와 Rack