Como usar o POST como solução alternativa para o limite de caracteres de URL

10

Se você tiver uma API e suportar a operação POST apenas devido a limitações de tamanho de URL e à passagem de parâmetros complexos na solicitação, ainda poderá dizer que possui uma arquitetura RESTful?

O que o acima basicamente implica é que para esta API particular (somente leitura), não há diferença semântica entre um GET e um POST, então o que pode ser feito com um GET também pode ser feito com um POST (mas não vice-versa devido às limitações).

Isso ainda tornaria o estilo da arquitetura um RESTful?

    
por Andreas Grech 10.05.2011 в 10:38
fonte

5 respostas

4

Tecnicamente, você não está violando nenhuma restrição. No entanto, você está reduzindo severamente a autodescrição dos pedidos. Isso resultará na perda da capacidade de armazenar respostas em cache. Ser capaz de armazenar em cache as respostas é um recurso essencial necessário para criar sistemas REST eficazes.

    
por Darrel Miller 10.05.2011 / 13:27
fonte
0

Portanto, a questão aqui é sobre a arquitetura tranquila e não para os serviços da web. Se usarmos as informações fornecidas em Wiki-RestfulArch -Constraints , sim é.

    
por sudmong 10.05.2011 / 11:54
fonte
0

Você definitivamente perderá a funcionalidade que o HTTP fornece para solicitações GET. Proxies, por exemplo, fazem certas suposições sobre solicitações GET (idempotência, capacidade de armazenamento).

Não há nada de errado com o POST perse, mas talvez o método REPORT seja mais apropriado.

    
por Evert 10.05.2011 / 13:00
fonte
0

O termo Representational State Transfer foi introduzido e definido em 2000 por Roy Fielding em sua tese de doutorado. A Seção 6.3 explica como aplicar o REST ao HTTP: link

A Fielding não afirma que o uso de POST é proibido.

A Wikipedia também menciona o POST como uma operação HTTP legítima para serviços da Web RESTful: link

    
por ceving 10.05.2011 / 11:43
fonte
0

Por que você simplesmente não muda para incluir um corpo no GET em vez de usar a string de consulta?

Atualizar

O RFC diz o seguinte:

  

Um servidor DEVERIA      ler e encaminhar um corpo de mensagem em qualquer solicitação; se o método de solicitação      não inclui semântica definida para um corpo de entidade, então o      message-body DEVE ser ignorado ao manipular o pedido

Não há nada na especificação que diz que um corpo não pode ser incluído em nenhum dos métodos. E todos os proxies, servidores etc são obrigados a incluir o corpo. Cabe ao manipulador (você) ignorar o corpo ou não.

Quanto ao método GET, nada afirma que não pode incluir um corpo.

Isso significa que você pode usar um corpo GET, contanto que o seu servidor web o suporte.

    
por jgauffin 10.05.2011 / 13:19
fonte