Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Daniel-Lopes

Rest: achei que tinha entendido mas ...

Recommended Posts

Pessoal, estou tentando desenvolver um web service em php.

 

Estou em duvida, esse web service irá atender um aplicativo para iphone, no caso ele fará upload de uma imagem.

Como recebo esta imagem ? utilizando $_FILES['campo'] ???

Compartilhar este post


Link para o post
Compartilhar em outros sites

sim, exatamente.

 

Qual a dúvida ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Era para confirmar pois as variáveis eu tentei recuperar com $_POST, mas aquelas que são envidas no body no formato json não são recuperadas por $_POST... ou será que posso está fazendo algo errado ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

mostre oque vc está fazendo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

não são recuperados pelo POST pq não são POST, como vc mesmo disse são JSON.

 

vc pode dar um json_decode que isso vai virar um array praticamente igual o POST

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estou usando um mini framework chamado RESPECT\REST (https://github.com/Respect/Rest);

Estou usando para testes o Advanced Rest Client para o google chrome.

 

segue o codigo de teste:

 

<?php
require_once 'vendor/autoload.php';
 
use Respect\Rest\Router;

$r3 = new Router;

$r3->post('/login', function() {
        print_r($_POST);
		//return file_get_contents('php://input');
    });

 

 

se eu envio usando o Content-Type: application/json

E percebi que o php não recebe nada na variavel $_POST

 

Se uso outra codificação de "formulário" aí chega perfeito.

 

Pelo que tinha entendido achei que os dados enviados via post, mesmo sendo em json, eles chegariam no php dentro da variavel $_POST.

 

Esse é meu problema, se o pessoal do app usar content-type: application/json, eu terei que recebe-lo não via $_POST e sim trata-lo: file_get_contents('php://input')

Compartilhar este post


Link para o post
Compartilhar em outros sites

Segundo comentários do manual, $_POST é a grosso modo uma commodity baseada nos dados "crus" (raw) recebidos pelo programa PHP, acessíveis através do php://input.

 

Sendo assim você não usaria $_POST, mas poderia muito bem quebrar os dados crus recebidos e continuar trabalhando na mesma notação.

 

Há ainda a possibilidade, na hipótese de haver JS envolvido, de você codificar todos os dados do formulário num único JSOn e enviá-lo via POST ao programa.

 

Daí sim você usaria $_POST.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Enrico Pereira, estou usando POST

 

Mas pelo que o Bruno falou foi o que eu pensei... terei que tratar de acordo com o content type que chegar...

 

Agora ... se eu usar o Slim Framework apenas para receber os dados e como "router" ele ja trata esses dados ? pelo que vi am alguns artigos ele tem essa opção:

 

 


$request = $app->request(); $body = $request->post();

E depois eu usaria apenas:

 

$body['campo'];

 

 

A questão é que será que ele trata todos os tipo de content-type que recebe ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

não essa opção é so para informar o tipo de retorno que a pagina vai aceitar (accept)

 

Mas consegui obter o content-type com $_SERVER['content-type'].. e aí eu trato os tipos mais comuns.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.