학습
PHP RESTful API 기초
PHP RESTful API 기초 — 중급
RESTful API 기초
1. 도입 (왜 배워야 하는가)
RESTful API는 현대 웹 애플리케이션의 핵심 요소 중 하나로, 클라이언트와 서버 간의 데이터 교환을 간편하게 해줍니다. 특히, 모바일 애플리케이션, 웹 서비스, IoT 기기 등 다양한 플랫폼에서 RESTful API를 사용하여 서로 다른 시스템이 원활하게 소통할 수 있도록 합니다.
이러한 API를 모른다면, 웹 애플리케이션의 기능을 확장하거나 외부 서비스와의 통합이 어려워질 수 있습니다. 예를 들어, 결제 시스템이나 소셜 미디어 로그인 기능을 추가하고 싶을 때 RESTful API를 이해하지 못하면 개발이 지연되거나 불가능해질 수 있습니다.
2. 핵심 개념 설명
REST (Representational State Transfer)
REST는 클라이언트와 서버 간의 통신 방식을 정의하는 아키텍처 스타일입니다. HTTP 프로토콜을 기반으로 하며, 자원(데이터)을 URI(Uniform Resource Identifier)를 통해 표현합니다.
HTTP 메서드
- GET: 서버에서 데이터를 조회할 때 사용합니다.
- POST: 서버에 새로운 데이터를 생성할 때 사용합니다.
- PUT: 서버의 데이터를 수정할 때 사용합니다.
- DELETE: 서버의 데이터를 삭제할 때 사용합니다.
| 메서드 | 설명 | 예시 |
|---|---|---|
| GET | 데이터 조회 | /api/products |
| POST | 데이터 생성 | /api/products (새로운 상품 추가) |
| PUT | 데이터 수정 | /api/products/1 (ID가 1인 상품 수정) |
| DELETE | 데이터 삭제 | /api/products/1 (ID가 1인 상품 삭제) |
3. 기본 코드 예제
아래는 PHP에서 RESTful API를 구현하는 기본적인 예제입니다.
// api.php
header("Content-Type: application/json; charset=UTF-8");
$requestMethod = $_SERVER['REQUEST_METHOD'];
switch ($requestMethod) {
case 'GET':
// 데이터를 조회하는 부분
echo json_encode(["message" => "데이터를 조회했습니다."]);
break;
case 'POST':
// 데이터를 생성하는 부분
echo json_encode(["message" => "데이터를 추가했습니다."]);
break;
case 'PUT':
// 데이터를 수정하는 부분
echo json_encode(["message" => "데이터를 수정했습니다."]);
break;
case 'DELETE':
// 데이터를 삭제하는 부분
echo json_encode(["message" => "데이터를 삭제했습니다."]);
break;
default:
echo json_encode(["message" => "지원하지 않는 메서드입니다."]);
break;
}
실행 결과
{"message":"데이터를 조회했습니다."}{"message":"데이터를 추가했습니다."}{"message":"데이터를 수정했습니다."}{"message":"데이터를 삭제했습니다."}{"message":"지원하지 않는 메서드입니다."}코드 한 줄씩 동작 설명
header("Content-Type: application/json; charset=UTF-8");: 응답의 콘텐츠 타입을 JSON으로 설정합니다.$_SERVER['REQUEST_METHOD'];: 현재 요청된 HTTP 메서드를 가져옵니다.switch ($requestMethod): 요청된 메서드에 따라 동작을 분기합니다.- 각
case블록에서 해당 메서드에 맞는 작업을 수행하고 JSON 형식으로 응답합니다. - 잘못된 코드:
- 올바른 코드:
- 잘못된 코드:
- 올바른 코드:
- RESTful API는 웹 애플리케이션에서 클라이언트와 서버 간의 데이터 교환을 간편하게 해줍니다.
- HTTP 메서드(GET, POST, PUT, DELETE)를 통해 다양한 작업을 수행할 수 있습니다.
- API를 구현할 때는 요청 메서드에 맞는 처리를 정확히 해야 합니다.
- JSON 데이터 처리를 적절히 해야 클라이언트와의 통신이 원활해집니다.
- JSON과 XML 데이터 처리
- OAuth 인증 및 권한 부여
- API 버전 관리 방법
4. 실전 활용 예제
예제 1: 쇼핑몰에서 장바구니 기능 구현
쇼핑몰에서는 사용자가 상품을 장바구니에 담는 기능이 중요합니다. 이를 위해 POST 메서드를 사용하여 장바구니에 상품을 추가하고, GET 메서드로 장바구니 내용을 조회할 수 있습니다.
// cart.php
if ($_SERVER['REQUEST_METHOD'] 'POST') {
// 장바구니에 상품 추가 로직
echo json_encode(["message" => "장바구니에 상품을 추가했습니다."]);
} elseif ($_SERVER['REQUEST_METHOD'] 'GET') {
// 장바구니 조회 로직
echo json_encode(["cart" => ["상품1", "상품2"]]);
}
예제 2: 사용자 프로필 업데이트
사용자가 자신의 프로필을 수정할 때 PUT 메서드를 사용하여 서버에 데이터를 전송합니다.
// profile.php
if ($_SERVER['REQUEST_METHOD'] == 'PUT') {
// 프로필 수정 로직
echo json_encode(["message" => "프로필이 수정되었습니다."]);
}
5. 흔한 실수와 주의사항
실수 1: 잘못된 HTTP 메서드 사용
// GET 메서드로 데이터를 수정하려고 하는 경우
if ($_SERVER['REQUEST_METHOD'] == 'GET') {
// 수정 로직
}
// PUT 메서드로 수정해야 함
if ($_SERVER['REQUEST_METHOD'] == 'PUT') {
// 수정 로직
}
실수 2: JSON 데이터 처리 미비
// POST 요청 시 클라이언트가 보낸 JSON 데이터 처리 없음
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
echo json_encode(["message" => "데이터를 추가했습니다."]);
}
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$data = json_decode(file_get_contents("php://input"), true);
// $data를 사용하여 추가 로직 수행
}
6. 정리
다음에 학습하면 좋은 주제: