Pegar dados passados através do método PUT

Eu estou com um pequeno problema aqui, comecei a estudar sobre api e estou fazendo os meus primeiros testes, quanto tento puxar os dados recebidos através do método PUT:

parse_str(file_get_contents("php://input"), $input)

Ele não retorna retorna nada e usei o Rest test test no inicio mas estava dando erro, testei com a extensão do chorme chamada Talend API test e nada, usei o Postman pra confirmar e nada.

a forma de passar os dados via put e post, sao as mesmas. vai tudo no request, ou como querystring (/api?usuario='fulano') ou como parametro (/usuario/10) ou no corpo da requisicao ({id: 1, nome: 'fulano'})

A api rest usa o metodo http para definir que rota e que tipo de operacao sera utilizada. O PUT ou o PATCH indica que a rota escolhida ira fazer uma atualizacao.

nao conheco nada de php, mas em java e em nodejs, o verbo http so define qual metodo sera chamado quando recebo uma requisicao em uma determinada rota com aquele verbo. A obtencao dos dados eh a mesma em todo tido de requisicao, ta tudo no seu objeto request.

1 curtida
$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;
}