2012-09-06 1 views
2

작은 애플리케이션을 만들기 위해 노력하고 있습니다. REST가 작동하지 않고 DELETE 메소드에 문제가 있습니다. 전에는 사용하지 않았으므로 어떻게 작동하는지 잘 모르겠습니다.PHP를 사용하는 REST API를 사용하여 HTTP 메소드를 삭제

어쨌든, 나는 기본을 걸기 위해서 this tutorial을 따라 갔다. 미리 만들어진 배열을 사용하는 대신에 그것을 수정하여 사용자는 데이터를 제출하고 MySQL 데이터베이스에서 볼 수 있습니다. 사용 방법을 결정하고, 그에 따라

  • input.php을 작용 "API"를 - -

    • server.php 입력 데이터로 사용하는 형태를 표시

      I 3 개 파일이

    • viewinput.php - 입력 된 입력을 표시합니다.

    이제는 항목을 삭제할 수 있도록 viewinput.php에 "삭제"버튼을 배치하려고합니다. 여기에 입력 된 정보를 표시하는 코드가 있습니다.

    while ($result = mysql_fetch_array($sql)){ 
         ?> 
         <tr><td><? echo $result['id']." "; ?></td><td><? echo $result['text']; ?></td> 
         <form method = "delete" > 
          <td><input type="submit" name="delete" value="delete"></input></td></tr> 
          <input type="hidden" name = "hidden_delete" value="<? echo $result['id']; ?>"></input> 
         </form> 
         <? 
        } 
    

    지금, 내 server.php 파일합니다 (API)에서,이 방법을 결정하고 추가 처리를 위해 구성 요소로 URL을 파괴하는 호출되는 첫 번째 기능입니다. 내가 삭제 버튼을 누르면

    public function serve() { 
        $uri = $_SERVER['REQUEST_URI']; 
        echo $method = $_SERVER['REQUEST_METHOD']; //GET and POST are displayed, DELETE isn't 
        $paths = explode('/', $this->paths($uri)); 
        array_shift($paths); // 
        $resource = array_shift($paths); 
    

    , URL이 내가 이해에서

    /rest/viewinput?delete=delete&hiddendelete=3 //assuming I deleted the 3rd entry 
    

    /rest/viewinput 
    

    에서 이동, URL이 있어야한다/휴식/viewinput/3시 DELETE 메소드가 제출되었습니다.

    내 server.php 파일에서 메소드를 에코 할 때 "DELETE"는 POST와는 달리 표시되지 않습니다. 방법을 얻으십시오.

    DELETE와 관련하여 this resource이 발견되었으며 URL을 통해 식별자가 전달되는 것으로 알고 있지만 GET 및 POST와 같은 방식으로 수신해야합니다. 즉, 메소드를 반향 출력 할 때 DELETE가 표시되어야합니다.

  • +1

    실행중인 서버 - 때로는 서버에서 DELETE http 동사를 허용해야합니다. – Fenton

    +1

    html 4.0 스펙의 한계. 당신은'GET'과'POST' 이외의 다른 것을 사용할 수 없습니다. 이 답변을 참조하십시오 : http://stackoverflow.com/a/166501/1515540 – complex857

    +0

    @Sohnee localhost에서 아파치를 사용하고 있습니다 – user1104854

    답변

    2

    여기에 현재및 DELETE의 내 로우 다운이 있습니다.

    "일반 검색"을 사용하는 경우 대부분의 브라우저는 실제로이 동사 중 하나를 사용하지 않습니다. 그러나 XML Http 요청 (예 : AJAX)을 지원합니다. 따라서 클라이언트 측에서는 실제로는 PUT 또는 DELETE을 HTML 양식 요소에 직접 사용할 수 없으며 제대로 작동합니다. Complex857에서 제안한 해결 방법을 사용해야합니다 (예 : 요청에 의도 포함).

    백그라운드 AJAX 호출을 사용 중이거나 브라우저를 사용하여 요청하지 않은 경우 PUTDELETE과 같은 전체 HTTP 동사 제품군을 사용할 수 있습니다. 한 가지주의해야 할 점은 IIS에서는 서버가 수락하는 특정 동사를 설정할 수 있도록 이러한 동사를 허용하도록 설정을 변경해야 할 수 있습니다.

    관련 문제