php로 간단한 RESTful API 만들기
배우기
09 보너스 알고리즘/웹서비스
php로 간단한 RESTful API 만들기
실습 내용
PHP? 생활코딩을 통해 알아봅시다!

웹 서비스를 구현하다 보면, 데이터를 요청할 때 뿐만 아니라, 서버에 어떠한 명령을 내리기 위해서 요청을 보내기도 합니다.

이러한 요청을 보내는 방식은 개발자가 설계를 하기 나름이지만, 이러한 요청을 보내고 응답이 오는 방식에도 어느정도 권장되는 방식이 있습니다. 이러한 권장되는 방식 중에서도 널리 쓰이는 것이 RESTful API라는 것이 있습니다.

이 RESTful API라는 방식은 3가지 요소를 통해서 명령을 나타냅니다.

1. HTTP 메소드

2. URL

3. Body 메시지


이 문제의 목표는 클라이언트에서 jQuery Ajax를 통하여 상황에 맞는 RESTful API 요청을 서버에 전송하면, 해당 php 서버 페이지에서 요청에 알맞은 처리를 한 뒤 그 결과를 JSON 형태로 응답하는 것입니다.

오른쪽에 나와있는 템플릿 코드인 index.html에는 jQuery Ajax를 통하여 서버에 요청을 할 수 있는 인터페이스가 구성되어 있습니다. 템플릿 코드는, 웹 서버에 문자열 배열을 저장할 수 있는 기능을 만들어 놓고 RESTful API를 이용하여 서버의 배열에 문자열을 추가하고, 저장된 배열의 내용을 참조하고, 문자열 배열을 빈 배열로 초기화 할 수 있는 프로그램을 작성하다가, index.html만 완성한 코드입니다. array_data.php 파일의 기본 코드는, 어떠한 요청이 와도 성공한 결과를 나타내는 JSON형식으로 응답하는 코드만 구현되어 있습니다.


따라서 여러분은 작성하다 중단한 array_data.php 파일을 수정해서 서버에서 올바른 처리를 한 뒤 규격에 맞는 응답을 돌려주도록 코딩을 하면 됩니다.

index.html에서 변경할 수 있도록 나타난 필드는 HTTP 메소드, URL, Body 메시지로 3가지 이지만, URL은 고정입니다. HTTP메소드를 변경하면, 선택한 HTTP 메소드 방식으로 서버에 요청을 보내게 됩니다. Body 메시지 인풋 박스에 값을 넣으면, HTTP 패킷의 'body_msg'라는 키 값을 갖는 항목에 인풋 박스의 값이 들어가게 됩니다.


서버에서 응답값을 주는 규칙은 다음과 같습니다.


1. HTTP 메소드가 GET일 경우, 서버에서 가지고 있는 문자열 배열을 돌려준다. 저장된 문자열이 없을 시, 빈 배열이 응답된다.  Body 메시지에 있는 값은 무시된다.

비어있을 경우 []

데이터가 있는 경우 ["A", "B", "C"]


2. HTTP 메소드가 POST일 경우, 서버에서 가지고 있는 문자열 배열의 마지막에 값을 추가한다. Body 메시지에 있는 값을 추가하게 되며, 성공과 실패할 시 응답 값의 양식이 다르다.

2-1. Body 메시지에 길이가 1 이상인 문자열이 들어있을 경우 성공을 나타나는 JSON을 돌려주며, 배열의 마지막에 값이 추가되게 된다.

{ "result": true }



2-2. Body 메시지에 길이가 0 이하인 문자열이 들어있을 경우, 문자열이 없으므로 실패를 나타나는 JSON을 돌려주며, 배열의 데이터에는 변화가 없다.

{ "result": false }

3. HTTP 메소드가 DELETE일 경우, 서버에서 가지고 있는 문자열 배열을 빈 배열로 초기화한다. 기존에 POST로 추가된 데이터들은 모두 삭제된다. 성공할 시 성공을 나타내는 JSON을 돌려준다.

{ "result": true }



위 규칙에 알맞게 동작하도록, PHP 코드를 작성해보세요.


P.S 한 가지 힌트를 드리자면, php 서버에서 데이터를 가지고 있기 위해서 세션 슈퍼 전역변수(Session Superglobal)를 사용할 것을 권장합니다.

질문하기
추가 자료
no files uploaded

추가 자료가 없습니다

여기서 새로운 학습 자료를 확인하세요!
선생님이 추가한 자료들을 바로 확인할 수 있어요.