development

HTTP 프로토콜의 PUT 및 DELETE 및 PHP에서의 사용법

big-blog 2020. 12. 29. 08:20
반응형

HTTP 프로토콜의 PUT 및 DELETE 및 PHP에서의 사용법


소개

다음을 읽었습니다.

HTTP (Hypertext Transfer Protocol)는 웹의 생명입니다. 문서를 전송하거나 AJAX 요청을 할 때마다 사용됩니다. 그러나 HTTP는 놀랍게도 일부 웹 개발자들 사이에서 상대적으로 알려지지 않은 것입니다.

HTTP 동사는 "uniform interface"제약의 주요 부분을 구성하며 명사 기반 리소스에 대응하는 작업을 제공합니다. 기본 또는 가장 일반적으로 사용되는 HTTP 동사 (또는 적절하게 호출 된 메서드)는 POST, GET, PUTDELETE 입니다.

어?

글쎄, 우리는 내가 사물을 잃어버린 지점에 이르렀다.

PUT그리고 DELETE그들은 말한다. 난 단지 지금까지 들어 본 적이 POSTGET결코 톱과 같은 $_PUT또는 $_DELETE내가 볼 한 모든 PHP 코드에 의해 전달합니다.

내 질문

(PUT) 및 (DELETE) 메서드는 무엇이며 PHP에서 사용할 수 있다면 어떻게해야할까요?

참고 : 이것이 실제로 문제가되지는 않는다는 것을 알고 있지만, 저는 항상 학습 기회를 발견하고 가능하다면 PHP에서 이러한 방법을 사용하는 방법을 배우고 싶습니다.


(PUT) 및 (DELETE) 방법은 무엇입니까?

이것을 설명하기 위해 많은 단어를 쓸 수 있고, 나는 그것을 할만큼 충분히 숙련되지는 않았지만, 이미 게시 된 바와 같이 HTTP 사양이 설명 하는 내용을 간략히 요약했습니다 .

프로토콜은 기본적으로 다음과 같이 말합니다.

  • 리소스액세스하고 데이터를 검색 해야 할 때 GET을 사용 하고이 데이터의 상태를 수정하거나 변경할 필요가 없습니다.

  • 일부 데이터 를 서버 보내야 할 때 POST를 사용 하십시오. 전의. 양식에서 이러한 데이터를 어딘가에 저장합니다.

  • 리소스액세스 해야 할 때 HEAD를 사용 하고 리소스 데이터없이 응답에서 헤더 만 검색 합니다.

  • 해당 시스템에 이미 존재 하는 일부 데이터의 상태교체 해야하는 경우 PUT를 사용 하십시오 .

  • 해당 시스템 에서 리소스 (전송 한 URI에 상대적) 삭제 해야하는 경우 DELETE를 사용하십시오 .

  • 자원에서 통신 옵션을 가져와야 할 때 OPTIONS를 사용 하여 해당 자원에 대해 허용 된 메소드를 확인하십시오 . 전의. CORS 요청 및 권한 규칙에 사용합니다.

  • 그 문서의 나머지 두 가지 방법에 대해 읽을 수 있습니다.

기본적으로 프로토콜은이를 준수하기 위해 애플리케이션에서 사용해야하는 일련의 규칙입니다.


... 그리고 그것들을 PHP에서 사용할 수 있다면 어떻게해야할까요?

응용 프로그램에서 사용 된 메서드를 검색 $_SERVER['REQUEST_METHOD']하고 그에 따라 반응 해야합니다 .

PUT 또는 DELETE 메서드를 지원하지 않는 브라우저를 다루는 일부 응용 프로그램은이 트릭 (html의 숨겨진 필드)을 ex. 값과 함께 사용합니다.

<input name="_method" type="hidden" value="delete" />

따라서 애플리케이션에서 이제 이것을 DELETE 요청으로 인식 할 수 있습니다.


PHP가 매개 변수를 처리하는 방법에 대한 간단한 설명을 따르십시오.

사용자 (브라우저, 클라이언트)가 HTTP 서버에 리소스를 요청할 때 프로토콜 (HTTP)에서 허용하는 방법 중 하나를 사용해야합니다. 따라서 다음을 통과해야합니다.

  • 방법
  • 리소스의 Uri
  • User-Agent, Host, Content-Length 등과 같은 요청 헤더
  • (요청의 선택적 본문)

따라서 요청은 다음과 같아야합니다.

GET /something/index.php?maybe=aparameter

이제 애플리케이션 내부에서 PHP는이 GET 요청에서 매개 변수를 가져 와서이를 슈퍼 글로벌 (애플리케이션 전체에서 액세스 가능) 배열에 삽입합니다. 따라서 $_GET['maybe']'aparameter'를 반환하는 액세스 할 수 있습니다 .

POST 요청의 경우 유사한 방식으로 HTTP 서버에 리소스를 요청하지만 중요한 차이점이 있습니다. 요청 본문에 데이터를 제공합니다.

POST /something/index.php

(body) maybe=aparameter

이제 응용 프로그램 내부에서이 POST 요청의 PHP는 매개 변수를 가져 와서 전역 (응용 프로그램 전체에서 액세스 가능) 배열에 삽입합니다. 따라서 $_POST['maybe']'aparameter'를 반환하는 액세스 할 수 있습니다 .

응답 상태 코드에도주의를 기울이십시오 (예 : PUT 요청을 받았는데 해당 리소스를 오류없이 업데이트 한 경우 204 상태 -No content-를 반환해야 함) .


PHP에서 PUT 데이터를 사용하는 방법 :

$method = $_SERVER['REQUEST_METHOD'];
if ('PUT' === $method) {
    parse_str(file_get_contents('php://input'), $_PUT);
    var_dump($_PUT); //$_PUT contains put fields 
}

PHP $_GET$_POST이름이 잘못되었습니다. $_GET쿼리 문자열 매개 변수의 값에 액세스하는 데 사용되며 $_POST요청 본문에 액세스 할 수 있습니다.

쿼리 문자열 매개 변수를 사용하는 것은 GET 요청으로 제한되지 않으며 POST 이외의 다른 종류의 요청이 요청 본문과 함께 올 수 있습니다.

페이지를 요청하는 데 사용되는 동사를 찾으려면을 사용하십시오 $_SERVER['REQUEST_METHOD'].


이러한 (PUT 및 DELETE) 메서드를 사용하기에 가장 적합한 위치는 REST API입니다. http 메소드를 사용하여 작업 모드를 정의하는 경우 예를 들어 리소스를 가져 오려는 경우 다음을 사용할 수 있습니다.

GET http://api.example.com/employee/<any_id>

새 항목을 추가하려면 :

POST http://api.example.com/employee/

업데이트 또는 편집 :

PUT http://api.example.com/employee/

기존 리소스를 삭제하려면 :

DELETE http://api.example.com/employee/1

기타

이제 그에 따라 조치를 취할 수 있도록 사용 된 방법 PHP을 읽어야 HTTP합니다.

그렇게 할 수있는 많은 라이브러리가 있습니다.


(PUT) 및 (DELETE) 방법은 무엇입니까?

HTTP 사양에 설명되어 있습니다 .

간단히 말해서, 다소 단순화 PUT하는 것은 파일을 URL에 업로드하고 URL DELETE에서 파일을 삭제하는 것입니다.

never sawy something like $_PUT or $_DELETE passing by in any PHP code I've ever viewed

$_POST and $_GET are terribly named superglobals. $_POST is for data parsed from the request body. $_GET is for data parsed from the URL. There's nothing that strictly ties data in either of those places (especially the URL) to a particular request method.

DELETE requests only care about the URL's path, so there is no data to parse.

PUT requests usually care about the entire request body (not a parsed version of it) which you would access with file_get_contents('php://input');.

for and if it's possible to use them in PHP, how would I go about this.

You'd need to map the URL onto a PHP script (e.g. with URL rewriting), test the request method, work out what URL you were actually dealing with, and then write code to do the appropriate action.

ReferenceURL : https://stackoverflow.com/questions/27941207/http-protocols-put-and-delete-and-their-usage-in-php

반응형