제1회 구름코드챌린지(GCC) 기출 문제
    • 01
      텍스트 코딩 정복
    • 문자열 출력
      사칙연산
      절대값 출력하기
      배열에서의 최소값 구하기
      구구단 출력
      약수 구하기
      부분 문자열
      평균과 평균보다 큰 수
      등차 / 등비 수열
      약수의 합
      유일한 수
      피자 쿠폰
      접미사 배열
      멀티탭 사용
      숫자 찍기
    • 02
      알고리즘 정복
    • 완전수 구하기
      소수 판별
      괄호
      어느 고고학자 이야기
      팰린드롬
      채점하기
      구름컵 사이클 대회
      앞 뒤가 같은 수
      탈출
      섬나라 왕
    • 03
      웹 서비스 만들기
    • 자바스크립트 DOM 제어
      XHR이용하여 Ajax 구현
      PHP서버로 json 응답
    • 04
      GUI 앱 만들기
    • Swing으로 카운터 만들기
      AWT로 메모 입력기 만들기
    • 05
      블록 프로그래밍 정복
    • 탱크 이동하기
      탱크 방향전환
      탱크 여러번 방향전환1
      탱크 여러번 방향전환2
      최적의 길을 찾아가기
    • 06
      블록으로 알고리즘 정복
    • 대포발사
      방향전환
      이동한뒤 대포발사
      십자모양의 길
      복잡한 길 이동하기
    • 07
      로보코드 대전 (블럭)
    • 가만히 있는 적 격파하기
      움직이는 적 격파하기
      공격하는 적 격파하기
      대결1
      대결2
      제한시간 안에 적 격파하기
      2개 로봇 동시에 격파하기
      2개 로봇 동시에 격파하기2
      벽타는 로봇 격파하기
      3개 로봇 동시에 격파하기
    • 08
      로보코드 대전 (코드)
    • 몸풀기
      심화함수
      최대속도, 최대회전각도 바꾸기
      대결1
      대결2
    • 09
      보너스 알고리즘/웹서비스
    • 구름 레이싱
      생화학 무기
      부라노섬
      배열 나누기
      스마트폰 테스트
      Javascript로 jsonp 구현하기
      php로 간단한 RESTful API 만들기
    • 10
      보너스 로보코드 정복
    • 3라운드 다승제 1
      3라운드 다승제 2
      3라운드 다승제 3
      4라운드 점수제 1
      4라운드 점수제 2
      4라운드 점수제 3
    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)를 사용할 것을 권장합니다.

    질문하기