Novo método HTTP SEARCH
(httptoolkit.tech)-
Introdução ao método SEARCH, adicionado como um novo Draft no IETF
-
Para buscar dados complexos, usar apenas GET/POST existentes é ineficiente
SEARCH /customers HTTP/1.1
Host: example.com
Content-Type: application/sql
SELECT username, email
WHERE DATEDIFF(DAY, GETDATE(), signup_date) > 7
-
Na prática, não significa que instruções SQL serão usadas como padrão, mas sim que esse tipo de conteúdo para busca pode ser enviado no corpo da requisição
-
Com isso, para uma mesma URL passam a ser possíveis GET, POST e SEARCH
-
Pelo cabeçalho Accept-Search, é possível especificar os formatos usados na busca :
→ Accept-Search: application/sql, application/graphql
- Baseado no padrão do método SEARCH que existia no WebDAV (rfc5323)
9 comentários
O OData é praticamente uma convenção para consultar dessa forma. Mas dizer que também seria possível usar
application/sqleapplication/graphqlno mesmo endpoint... é meio difícil de imaginar.Acho que o uso em si seria para casos em que disparar SQL diretamente é problemático e, embora semanticamente seja um
GET, como no Elasticsearch, você queira fazer uma consulta enviando um HTTP Body.Logo no início do texto, diz-se que “it was recently adopted as an IETF draft standard”; nesse caso, esse “recently” se refere mesmo a 2015? O rascunho que eu vi foi este: https://tools.ietf.org/html/draft-snell-search-method-00. Pergunto porque queria saber se houve alguma atualização mais recente.
É https://datatracker.ietf.org/doc/….
Parece que foi enviado recentemente, em 2021-03-31.
Se for para enviar informações no body, teria que usar PUT ou POST.
Como eles não podem usar cache,
talvez também dê para usar algo como SEARCH.
Afinal, basta enviar só nos casos em que for aceito.
Isso me faz pensar no GraphQL, na direção de tentar melhorar as inconveniências do get e do post
Quando começarem a passar consultas no corpo da requisição, dá a sensação de que em algum momento vai surgir um problema como SQL Injection (principalmente se o site foi feito sem muito critério)..
Acho que dá para entender como um tipo de GET com body. De qualquer forma, vai ser preciso validar o body...
Pois é..