新しいHTTP SEARCHメソッド
(httptoolkit.tech)-
IETFに新しいDraftとして追加されたSEARCHメソッドの紹介
-
複雑なデータを取得するには、従来のGET/POSTだけでは非効率的
SEARCH /customers HTTP/1.1
Host: example.com
Content-Type: application/sql
SELECT username, email
WHERE DATEDIFF(DAY, GETDATE(), signup_date) > 7
-
実際にSQL文が標準として使われるわけではなく、リクエストボディに検索用のこのようなコンテンツを含められるということ
-
これにより、1つのURLに対してGET、POST、SEARCHのすべてが可能になる
-
Accept-Searchヘッダーを通じて、検索に使用するフォーマットを指定可能 :
→ Accept-Search: application/sql, application/graphql
- WebDAVにあったSEARCHメソッド標準に基づく (rfc5323)
9件のコメント
ODataはほぼ同じような方法でクエリするための規約です。しかし、
application/sqlとapplication/graphqlを同じエンドポイントで使えるというのは……ちょっと想像がつきませんね。用途自体としては、SQLを直接叩くのは問題があり、elasticsearchのようにセマンティックにはGETだが、HTTP Bodyを入れて照会したい場合に使うことになるのではないかと思います。
冒頭で「it was recently adopted as an IETF draft standard」とありますが、ここでいう recently は2015年のことで合っていますか? 私が見たドラフトは https://tools.ietf.org/html/draft-snell-search-method-00 なのですが、もしかしてもっと新しい変更がありますか。
新しい HTTP SEARCH メソッド
https://datatracker.ietf.org/doc/… です。
最近 2021-03-31 にアップロードされたようです。
bodyに情報を載せて送るなら PUT や POST を使うことになるでしょう。
これらは cache を使えないので、
SEARCH というものを使うこともできそうですね。
どうせ accept した場合にだけ送ればいいので。
get,post の不便さを改善しようとする方向性から、graphql を思い出しますね
クエリをリクエストボディで渡し始めると、いつか(あまり深く考えずに作ったサイトなら)SQL Injection のような問題が起きそうな気がしますね..
body がある GET のようなものと理解すればよさそうですね。どのみち body のバリデーションは必要でしょうし……
そうですね..