HTTP 프로토콜의 PUT 및 DELETE 및 PHP에서의 사용
서론
다음을 읽었습니다.
HTTP(Hypertext Transfer Protocol)는 웹의 수명입니다.문서를 전송하거나 AJAX 요청을 할 때마다 사용됩니다.그러나 HTTP는 일부 웹 개발자들 사이에서 의외로 알려지지 않은 상대적인 존재이다.
HTTP 동사는 우리의 "유니폼 인터페이스" 제약의 주요 부분을 구성하며 명사 기반 자원에 대응하는 동작을 제공합니다.프라이머리 또는 가장 일반적으로 사용되는HTTP 동사(또는 적절히 불리는 메서드)는 POST, GET, PUT 및 DELETE입니다.
응?
음, 우린 내가 모든 걸 잊어버린 지경에 이르렀어.
PUT
★★★★★★★★★★★★★★★★★」DELETE
그들은 말한다.처음 듣는 이야기지만POST
★★★★★★★★★★★★★★★★★」GET
건 본이 없어요.$_PUT
★★★★★★★★★★★★★★★★★」$_DELETE
「PHP」 「PHP」 「PHP」 「PHP」
질문입니다
이러한 방법(PUT)과 (DELETE)은 무엇을 위한 것이며 PHP에서 사용할 수 있다면 어떻게 해야 할까요?
주의: 이것이 문제가 되지 않는다는 것을 알지만, 저는 항상 학습 기회를 포착하고, 가능하다면 PHP에서 이러한 방법을 사용하는 것을 배우고 싶습니다.
이 방법(PUT)과 (DELETE)은 무엇입니까?
이것을 설명하기 위해서 많은 단어를 사용할 수 있습니다.그리고 저는 그것을 할 만큼 충분히 능숙하지 않습니다만, 이미 투고된 것처럼, HTTP 사양에 기재되어 있는 내용을 간단하게 정리하고 있습니다.
기본적으로 프로토콜은 다음과 같습니다.
리소스에 액세스하고 데이터를 검색해야 하며 이 데이터의 상태를 수정하거나 변경할 필요가 없는 경우 GET을 사용합니다.
서버에 데이터를 송신할 필요가 있는 경우는, POST 를 사용합니다.예를 들어, 데이터를 어딘가에 저장하기 위해 폼을 사용합니다.
리소스에 액세스하고 리소스 데이터 없이 응답에서 헤더만 검색해야 할 경우 HEAD를 사용합니다.
해당 시스템에 이미 존재하는 일부 데이터의 상태를 교체해야 할 경우 PUT을 사용합니다.
[ DELETE ]는, 송신한 URI 에 상대적인 자원을 삭제할 필요가 있는 경우에 사용합니다.
리소스에서 통신 옵션을 가져와 해당 리소스에 허용된 방법을 확인해야 할 경우 OPTIONS를 사용하십시오.예: CORS 요청 및 허가 규칙에 사용합니다.
그 문서의 나머지 두 가지 방법에 대해 읽어보실 수 있습니다. 죄송합니다. 한 번도 사용해 본 적이 없습니다.
기본적으로 프로토콜은 이를 준수하기 위해 응용 프로그램에서 사용해야 하는 규칙 집합입니다.
PHP에서 사용할 수 있다면 어떻게 해야 할까요?
에서는 슈퍼 어레이 php를 할 수 .$_SERVER
의 값을 합니다.REQUEST_METHOD
.
할 수 "Php" "DELETE" "PUT" "PUT").$_SERVER['REQUEST_METHOD'] === 'DELETE'
★★★★★★★★★★★★★★★★★」$_SERVER['REQUEST_METHOD'] === 'PUT'
.
* PUT 또는 DELETE 메서드를 지원하지 않는 브라우저에 따라서는 값 속성에 동사가 지정된 html 형식의 숨김 필드인 다음과 같은 트릭을 사용하는 어플리케이션도 있습니다.
<input name="_method" type="hidden" value="delete" />
이러한 2개의 http 요청을 처리하는 방법에 대한 간단한 설명을 가진 예를 따르십시오.
사용자(브라우저, 클라이언트)가 HTTP 서버에 리소스를 요청할 때 프로토콜(HTTP)에서 허용하는 방법 중 하나를 사용해야 합니다.따라서 요청은 다음과 같이 처리되어야 합니다.
- A 방법
- 리소스의 URI
- 사용자 에이전트, 호스트, 콘텐츠 길이 등의 요청 헤더
- (요구 본문(옵션))
및POST GET)을 수 $_GET
,$_POST
및PHP는 하지 않지만 의 값을 사용할 수 있습니다.$_SERVER['REQUEST_METHOD']
요청의 메서드를 확인하고 결과적으로 로직을 처리합니다.
따라서 PUT 요청은 다음과 같습니다.
PUT /something/index.php
(body) maybe=aparameter
, 「PHP」를 .php://input
예를 들어 다음과 같은 방법으로 스트리밍합니다.
if ($_SERVER['REQUEST_METHOD'] === 'PUT') {
$myEntireBody = file_get_contents('php://input'); //Be aware that the stream can only be read once
}
DELETE 요구는 다음과 같습니다.
DELETE /something/index.php?maybe=aparameter
메서드를 확인한 후 다시 로직을 구축할 수 있습니다.
if ($_SERVER['REQUEST_METHOD'] === 'DELETE') {
// do something
}
DELETE 요청에는 본문이 없으며 응답 상태 코드에도 주의를 기울여 주십시오(예: PUT 요청을 받고 오류 없이 리소스를 업데이트한 경우 204 상태 - 컨텐츠 없음-을 반환해야 합니다).
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)은 무엇입니까?
간단히 말해서, 좀 더 단순화하면,PUT
파일을 URL에 업로드하기 위한 것입니다.DELETE
는 URL에서 파일을 삭제하는 것입니다.
같은 것을 톱으로 본 적이 없다
$_PUT
또는$_DELETE
내가 본 어떤 PHP 코드든 지나쳐간다.
$_POST
그리고.$_GET
'슈퍼글로벌'이라는 이름이 붙었죠 $_POST
요청 본문에서 해석된 데이터용입니다. $_GET
URL에서 해석된 데이터용입니다.이러한 장소(특히 URL)의 데이터를 특정 요청 방법에 엄격하게 연결하는 것은 없습니다.
DELETE 요청은 URL 경로에만 관심이 있으므로 구문 분석할 데이터가 없습니다.
PUT 요구는 보통 (파싱된 버전이 아닌) 요청 본문 전체를 사용하여 접근합니다.file_get_contents('php://input');
.
PHP에서 사용할 수 있다면 어떻게 해야 할까요?
URL을 PHP 스크립트에 매핑(예: URL 재작성)하고 요청 방법을 테스트하고 실제로 어떤 URL을 취급하는지 파악한 후 적절한 작업을 수행하기 위해 코드를 작성해야 합니다.
$GLOBALS["_PUT"]=null;
if($_SERVER['REQUEST_METHOD'] == 'PUT') {
$form_data= json_encode(file_get_contents("php://input"));
$key_size=52;
$key=substr($form_data, 1, $key_size);
$acc_params=explode($key,$form_data);
array_shift($acc_params);
array_pop($acc_params);
foreach ($acc_params as $item){
$start_key=' name=\"';
$end_key='\"\r\n\r\n';
$start_key_pos=strpos($item,$start_key)+strlen($start_key);
$end_key_pos=strpos($item,$end_key);
$key=substr($item, $start_key_pos, ($end_key_pos-$start_key_pos));
$end_value='\r\n';
$value=substr($item, $end_key_pos+strlen($end_key), -strlen($end_value));
$_PUT[$key]=$value;
}
$GLOBALS["_PUT"]=$_PUT;
}
if (!function_exists("getParameter")){
function getParameter($parameter)
{
$value=null;
if(($_SERVER['REQUEST_METHOD'] == 'POST')&& (isset($_POST[$parameter]))){
$value=$_POST[$parameter];
}
else if(($_SERVER['REQUEST_METHOD'] == 'PUT')&& (isset($GLOBALS["_PUT"][$parameter])))
{
$value=$GLOBALS["_PUT"][$parameter];
}
else if(($_SERVER['REQUEST_METHOD'] == 'DELETE')&& (isset($_DELETE[$parameter]))){
$value=$_DELETE[$parameter];
}
else if(($_SERVER['REQUEST_METHOD'] == 'PATCH')&& (isset($_PATCH[$parameter]))){
$value=$_PATCH[$parameter];
}
else if(isset($_GET[$parameter])){
$value=$_GET[$parameter];
}
return $value;
}
}
언급URL : https://stackoverflow.com/questions/27941207/http-protocols-put-and-delete-and-their-usage-in-php
'source' 카테고리의 다른 글
사전에서 임의의 값을 얻는 방법 (0) | 2022.10.26 |
---|---|
열에 있는 각 개별 값의 카운트를 가져오려면 어떻게 해야 합니까? (0) | 2022.10.26 |
조건부로 부모 요소 렌더링, 내부 html 유지 (0) | 2022.10.26 |
matplotlib의 플롯을 클리어하기 위해 cla(), clf() 또는 close()를 사용하는 경우 (0) | 2022.10.26 |
python을 사용하여 빈 파일 만들기 (0) | 2022.10.26 |