HTTP 프로토콜의 PUT 및 DELETE 및 PHP에서의 사용법
소개
다음을 읽었습니다.
HTTP (Hypertext Transfer Protocol)는 웹의 생명입니다. 문서를 전송하거나 AJAX 요청을 할 때마다 사용됩니다. 그러나 HTTP는 놀랍게도 일부 웹 개발자들 사이에서 상대적으로 알려지지 않은 것입니다.
HTTP 동사는 "uniform interface"제약의 주요 부분을 구성하며 명사 기반 리소스에 대응하는 작업을 제공합니다. 기본 또는 가장 일반적으로 사용되는 HTTP 동사 (또는 적절하게 호출 된 메서드)는 POST, GET, PUT 및 DELETE 입니다.
어?
글쎄, 우리는 내가 사물을 잃어버린 지점에 이르렀다.
PUT
그리고 DELETE
그들은 말한다. 난 단지 지금까지 들어 본 적이 POST
과 GET
결코 톱과 같은 $_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
'development' 카테고리의 다른 글
WPF TextBlock과 TextBox간에 차이점이 있습니까? (0) | 2020.12.29 |
---|---|
Angular-Translate를 사용하여 HTML이 포함 된 문자열을 처리하는 방법은 무엇입니까? (0) | 2020.12.29 |
Spring MVC 3에서 페이지 네이션을 구현하는 방법 (0) | 2020.12.29 |
Android 배경 이미지 메모리 사용량 (0) | 2020.12.29 |
서명되지 않은 char을 char로 또는 그 반대로 바꿀 수 있습니까? (0) | 2020.12.29 |