REST API? 들어본 적은 있는데 막막하다면, 이 글 하나로 정리해드릴게요!
안녕하세요! 저는 PHP를 배우던 중에 “API도 만들 수 있대!”라는 얘기를 듣고 바로 도전했었어요. 그런데 HTML 없이 JSON만 응답하고, HTTP 메서드가 POST니 GET이니 하니까 처음엔 많이 헷갈리더라고요. 😅 REST API는 요즘 프론트엔드와의 연동에서 필수로 쓰이는 기술이에요. PHP는 간단한 서버부터 Laravel 같은 프레임워크까지 다양한 방식으로 API를 만들 수 있습니다.
이번 글에서는 순수 PHP만으로 RESTful 구조를 갖춘 API를 만드는 방법을 소개하고, JSON 응답, 헤더 처리, 보안 고려사항까지 초보자의 눈높이에 맞춰 알려드릴게요.
목차
1. REST API란 무엇인가?
REST는 Representational State Transfer의 약자로, HTTP 프로토콜을 기반으로 자원을 요청하고 응답하는 아키텍처 스타일입니다. 흔히 웹과 모바일 앱에서 서버와 데이터를 주고받을 때 사용되죠. REST API는 GET, POST, PUT, DELETE 같은 HTTP 메서드를 사용해 데이터를 CRUD 방식으로 다루는 방식이에요.
예를 들어, /users
라는 엔드포인트가 있다면:
- GET /users → 사용자 목록 조회
- POST /users → 사용자 생성
- PUT /users/1 → 1번 사용자 수정
- DELETE /users/1 → 1번 사용자 삭제
이처럼 URL 구조 + HTTP 메서드 조합만으로 깔끔한 API 설계가 가능하며, 클라이언트-서버 구조를 분리할 수 있어 유지보수성과 확장성이 좋아집니다.
2. HTTP 메서드와 REST 구조 이해
REST API는 HTTP 메서드별로 동작이 명확하게 구분됩니다. PHP에서도 $_SERVER['REQUEST_METHOD']
로 요청 방식을 판별해 각각 처리할 수 있어요.
메서드 | 기능 | 설명 |
---|---|---|
GET | 조회 | 서버로부터 데이터 가져오기 (URL에 쿼리 포함) |
POST | 생성 | 서버에 새 데이터 추가 (body에 데이터 포함) |
PUT / PATCH | 수정 | 데이터 전체/일부 수정 (보통 JSON 요청) |
DELETE | 삭제 | 특정 자원 삭제 요청 |
RESTful 설계를 위해선 메서드에 맞는 URL 설계와, 응답 코드/포맷(JSON 등)의 일관성이 중요합니다.
3. PHP로 간단한 REST API 구성
PHP는 별도 프레임워크 없이도 간단한 API 서버를 만들 수 있습니다. 아래는 HTTP 메서드에 따라 조건 분기를 처리하는 예제입니다.
GET
요청 → 목록 출력POST
요청 → 데이터 추가PUT
요청 → JSON 파싱 후 수정DELETE
요청 → 식별자 기반 삭제
$method = $_SERVER['REQUEST_METHOD'];
switch ($method) {
case 'GET':
echo json_encode(["message" => "GET 요청"]);
break;
case 'POST':
echo json_encode(["message" => "POST 요청"]);
break;
case 'PUT':
parse_str(file_get_contents("php://input"), $_PUT);
echo json_encode(["message" => "PUT 요청", "data" => $_PUT]);
break;
case 'DELETE':
echo json_encode(["message" => "DELETE 요청"]);
break;
}
4. JSON 응답 만들기와 헤더 처리
REST API에서는 클라이언트가 데이터를 쉽게 파싱할 수 있도록 대부분 JSON 형식으로 응답을 줍니다. 이를 위해서는 PHP에서 적절한 Content-Type 헤더 설정이 필요해요.
// JSON 응답을 위한 헤더
header("Content-Type: application/json; charset=UTF-8");
// 예시 응답
$data = [
"status" => "success",
"message" => "데이터 전송 완료",
"result" => [ "id" => 1, "name" => "홍길동" ]
];
echo json_encode($data, JSON_UNESCAPED_UNICODE);
또한 REST 응답에는 HTTP 상태 코드도 중요합니다. PHP에서는 http_response_code()
함수로 간편하게 설정할 수 있어요.
// 예: 잘못된 요청
http_response_code(400);
echo json_encode(["error" => "잘못된 요청입니다"]);
1. PHP란? 웹 개발 초보자를 위한 입문 가이드
여러분, 'PHP'가 도대체 뭘까요? 아직도 헷갈린다면 지금이 바로 확실하게 정리할 찬스입니다!안녕하세요, 개발 입문자분들! 저도 한때 "PHP는 뭐에 쓰는 물건인고…" 싶었던 시절이 있었답니다. 2
rhandykim.tistory.com
5. 보안 체크포인트 (토큰, CORS 등)
API는 외부와 연결되므로 보안에 항상 신경 써야 합니다. 인증, 권한 체크, 도메인 제한 등 필수적인 보호 장치를 마련해야 해요.
보안 항목 | 설명 |
---|---|
API 토큰 | 인증을 위해 Header에 토큰 포함 (Bearer 방식) |
CORS 설정 | 교차 도메인 허용/제한 (Access-Control-Allow-Origin) |
HTTPS 사용 | 중간자 공격 방지를 위한 SSL 필수 |
쿼리 검증 | 입력 값은 무조건 필터링/검증 (SQL Injection 등) |
6. 실전 예제와 확장 전략
지금까지 배운 개념을 바탕으로 간단한 유저 관리 API를 만들어보세요. CRUD 로직을 분리해 functions.php
, users.php
처럼 파일 단위로 관리하면 더 확장성 있는 구조가 됩니다.
GET /users
→ 전체 사용자 목록POST /users
→ 새 사용자 추가 (JSON 요청)PUT /users/1
→ 특정 사용자 정보 수정DELETE /users/1
→ 사용자 삭제
이제 PHP도 훌륭한 백엔드 API 개발 언어가 될 수 있어요. 다음에는 Laravel이나 Slim 프레임워크를 통한 구조화된 REST API도 도전해보세요!
일반 웹페이지는 HTML로 시각적인 내용을 반환하지만, REST API는 데이터를 JSON 등의 형식으로 반환하며 화면 출력이 없습니다. 클라이언트가 데이터를 조작하는 데 집중해요.
POST는 새로운 리소스를 만들 때, PUT은 특정 리소스를 수정할 때 사용합니다. 예: POST는 /users에 새 유저를 추가, PUT은 /users/1로 1번 유저를 업데이트.
브라우저 보안 정책으로 인해 다른 도메인에서 API를 호출하면 기본적으로 차단됩니다. 이를 해결하려면 서버에서 Access-Control-Allow-Origin
헤더를 추가해 허용해야 해요.
HTML 폼은 GET과 POST만 지원합니다. PUT이나 DELETE를 쓰려면 JavaScript로 fetch()
나 XMLHttpRequest
를 이용해야 해요.
HTTPS 적용, 토큰 인증(Bearer), 입력값 검증, CORS 제한 등 다양한 보안 요소를 병행해야 합니다. 특히 사용자 인증이 필요한 API는 반드시 토큰 기반 인증을 써야 해요.
PHP로 HTTP 응답에서 XML 데이터만 파싱하는 방법
웹 개발을 하다 보면 HTTP 응답에서 XML 데이터만 추출해야 하는 경우가 많습니다. 특히 API 요청을 보낼 때 응답 헤더와 본문이 함께 포함된 경우, 원하는 XML 부분만 가져와야 할 필요가 있습니다.
rhandykim.tistory.com
처음 REST API를 만든다고 했을 때, 사실 PHP로 가능한가? 하는 의심이 들었어요. JavaScript나 Node.js 쪽에서만 사용하는 줄 알았거든요. 그런데 막상 해보니까 PHP도 훌륭한 API 백엔드가 될 수 있더라고요. 특히 JSON 응답을 직접 만들어보고, GET과 POST를 나눠 처리해본 경험은 정말 뿌듯했어요. 실제 프로젝트에서 회원가입, 로그인, 게시글 목록 API 등을 만들어보면서 REST 구조에 익숙해졌고, Postman으로 테스트하는 재미도 쏠쏠했죠. 작은 단일 파일로 시작하더라도 API 구조를 이해하고 나면, 프레임워크로 확장하는 것도 어렵지 않아요. 여러분도 지금 당장 index.php 하나 만들어서 도전해보세요. 👍
'💻 쇼핑몰 자동화 & 웹 개발 가이드' 카테고리의 다른 글
[PHP API] REST API 구축 시 자주 하는 실수 5가지 (11) | 2025.04.25 |
---|---|
[PHP API] REST API란? PHP로 구현하는 실전 예제 (7) | 2025.04.24 |
[PHP 입문] PDF 생성 및 다운로드 완전 정리 (11) | 2025.04.22 |
[PHP 입문] 엑셀 파일 처리: 읽기, 쓰기, 업로드까지 (9) | 2025.04.21 |
[PHP 입문] 이미지 처리: 업로드, 썸네일, 워터마크까지 (25) | 2025.04.18 |