file_get_contents("php://input")
ou $HTTP_RAW_POST_DATA
- qual é o melhor para obter o corpo da solicitação JSON?
E qual tipo de solicitação ( GET
ou POST
) devo usar para enviar dados JSON ao usar o lado do cliente XmlHTTPRequest
?
Minha pergunta foi inspirada nesta resposta: Como postar JSON para PHP com curl
Cite essa resposta:
De uma perspectiva de protocolo
file_get_contents("php://input")
é realmente mais correto, já que você não está realmente processando dados de formulário de várias partes http.
fonte
$HTTP_RAW_POST_DATA
é considerado obsoleto ephp://input
pode ser reutilizado.enable_post_data_reading
.Fonte: http://php.net/manual/en/wrappers.php.php .
fonte
$HTTP_RAW_POST_DATA
é considerado obsoleto ephp://input
pode ser reutilizado.file_get_contents (php: // input) - obtém os dados POST brutos e você precisa usar isso quando você escreve APIs e precisa de entrada XML / JSON / ... que não pode ser decodificada para $ _POST pelo PHP algum exemplo:
enviar por string JSON post
1.php
fonte
As regras usuais devem ser aplicadas para a forma como você envia a solicitação. Se a solicitação for para recuperar informações (por exemplo, um resultado de 'dica' de pesquisa parcial ou uma nova página a ser exibida, etc ...), você pode usar GET. Se os dados que estão sendo enviados fazem parte de uma solicitação para alterar algo (atualizar um banco de dados, excluir um registro, etc.), use o POST.
Do lado do servidor, não há razão para usar a entrada bruta, a menos que você queira pegar todo o bloco post / get data de uma só vez. Você pode recuperar as informações específicas que deseja através dos arrays _GET / _POST como de costume. Bibliotecas AJAX, como MooTools / jQuery, lidarão com a parte difícil de fazer as chamadas AJAX reais e codificar os dados do formulário em formatos apropriados para você.
fonte
<input type="hidden" name="data" value="json data here" />
é totalmente aceitável e permite que você recupere-o trivialmente do lado do servidor com $ _REQUEST ['dados'].Para dados JSON, é muito mais fácil fazer o POST como tipo de conteúdo "application / json". Se você usar GET, terá que codificar em URL o JSON em um parâmetro e é meio confuso. Além disso, não há limite de tamanho ao fazer o POST. O tamanho de GET é muito limitado (4K no máximo).
fonte
php.ini
.Sua segunda pergunta é fácil, GET tem uma limitação de tamanho de 1-2 kilobytes no servidor e no navegador, portanto, qualquer tipo de quantidade de dados maior você teria que enviar por meio do POST.
fonte