Perguntas sobre REST e lógica do servidor

1

Ok, em primeiro lugar eu sou um noob no servidor. Então, peço desculpas se te incomodar com minha ignorância.

Eu atualmente configurei um linode e o instalei com o MySQL e o apache. No momento, estou tentando aprender a usar o REST para me comunicar do meu aplicativo para iPhone para o servidor.

Eu quero que o aplicativo envie ao servidor um conjunto de coordenadas e que o servidor faça uma pesquisa sobre seus dados e retorne uma lista de outras coordenadas próximas. Eu também quero me comunicar com o menor uso de largura de banda possível.

Eu ouvi que o GET é uma boa maneira de fazer isso, mas também ouvi que informações (como as coordenadas) podem ser facilmente lidas por fontes externas. A segurança é um problema e quero que todas as informações enviadas ou recebidas do servidor sejam privadas. Devo usar o POST para conseguir isso? Existe uma maneira melhor? Posso enviar uma solicitação com JSON (para menos uso de largura de banda)?

O REST também é um bom caminho para fazer isso? Muitos dos tutoriais que estou vendo parecem apenas obter ou manipular tabelas de dados, e não há muita lógica de servidor acontecendo nos bastidores. O SOAP ou algo mais é melhor?

Eu não estou muito claro sobre isso no momento e meu google-fu está me dando resultados lentos, então qualquer informação será imensamente útil.

    
por Vadoff 23.07.2011 / 00:39

1 resposta

2

Nem o GET nem o POST são seguros via HTTP, se a segurança é importante, provavelmente você deveria procurar por um certificado SSL, até mesmo um auto-assinado faria - se você dissesse ao seu 'cliente' (eu acho que é algum tipo de telefone / tablet?) para confiar no certificado.

REST é provavelmente uma boa maneira de fazer isso, pois oferece um padrão simples e agradável. Você pode ter apenas um ponto final no momento, mas se você construir no REST, poderá adicionar mais facilmente à medida que seu aplicativo crescer. REST é um padrão, em vez de um protocolo. Isso significa que as APIs REST devem estar em conformidade com esses padrões;

  • Obter dados do servidor deve ser feito usando GET. GET nunca deve alterar um recurso.
  • Os recursos de alterações (Criação, atualização) no servidor devem ser feitos usando o POST.
  • Todos os endpoints / method devem ter seu próprio URL (I.E. api.example.com/get_something em vez de api.example.com/api?method=get_something)
  • As respostas devem ser retornadas com base no tipo de arquivo (Assim, get_something.xml deve retornar xml, get_something.json deve retornar JSON etc., não é necessário suportar todos os formatos, mas os que você faz devem ser solicitados por arquivo tipo).

Observe que tanto o GET quanto o POST podem fornecer parâmetros adicionais para o aplicativo no servidor, mas no caso do GET isso normalmente é usado apenas para filtrar a consulta, enquanto que no POST ele pode fornecer detalhes sobre a alteração a ser registrada.

Com relação ao problema JSON, geralmente o JSON usará mais largura de banda (apenas um pouquinho), mas é muito mais fácil trabalhar com ele.

Exemplo, aqui está uma versão em texto simples de uma possível resposta da API;

-25.90962,161.08639
-4.11525,-91.31969
-13.76025,147.22927

Mas aqui está uma resposta com o JSON

{
    coordinates:[
        {
            lat: -25.90962,
            long: 161.08639
        }
        {
            lat: -4.11525,
            long: -91.31.969
        }
        {
            lat: -13.76025,
            long: 147.22927
        }
    ]
}

O JSON tem o exemplo de ser facilmente legível por máquina, enquanto o texto simples teria que ser analisado. E lembre-se que com tipos de arquivo como JSON, você pode usar a compactação GZIP para reduzir drasticamente os dados que precisam ser transferidos.

Nota: Quando você entra em detalhes, o POST deve criar apenas novos recursos, enquanto o PUT deve apenas alterar os recursos existentes.

    
por 23.07.2011 / 00:57

Tags