💻 쇼핑몰 자동화 & 웹 개발 가이드

[PHP API] REST API 만들기 입문: JSON, HTTP 메서드

rhandy 2025. 4. 23. 07:10
728x90

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도 도전해보세요!

 

Q REST API와 일반 웹페이지는 뭐가 다른가요?

일반 웹페이지는 HTML로 시각적인 내용을 반환하지만, REST API는 데이터를 JSON 등의 형식으로 반환하며 화면 출력이 없습니다. 클라이언트가 데이터를 조작하는 데 집중해요.

A REST는 HTML이 아니라 JSON 데이터를 주고받는 게 핵심이에요!
Q REST API에서 POST와 PUT은 어떻게 구분하나요?

POST는 새로운 리소스를 만들 때, PUT은 특정 리소스를 수정할 때 사용합니다. 예: POST는 /users에 새 유저를 추가, PUT은 /users/1로 1번 유저를 업데이트.

A POST는 생성, PUT은 수정! 주소와 역할이 다릅니다.
Q CORS 에러는 왜 발생하나요?

브라우저 보안 정책으로 인해 다른 도메인에서 API를 호출하면 기본적으로 차단됩니다. 이를 해결하려면 서버에서 Access-Control-Allow-Origin 헤더를 추가해 허용해야 해요.

A 도메인 간 통신은 허용 설정 없으면 브라우저가 막아요!
Q PUT과 DELETE는 HTML 폼에서 사용할 수 없나요?

HTML 폼은 GET과 POST만 지원합니다. PUT이나 DELETE를 쓰려면 JavaScript로 fetch()XMLHttpRequest를 이용해야 해요.

A 네, PUT/DELETE는 자바스크립트를 써야 가능합니다!
Q REST API에 보안을 더 강화하려면 어떻게 해야 하나요?

HTTPS 적용, 토큰 인증(Bearer), 입력값 검증, CORS 제한 등 다양한 보안 요소를 병행해야 합니다. 특히 사용자 인증이 필요한 API는 반드시 토큰 기반 인증을 써야 해요.

A 인증/암호화/입력검사 모두 함께 적용하는 게 좋아요!

 

 

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 하나 만들어서 도전해보세요. 👍

728x90