10 ポイント 投稿者 xguru 2021-04-16 | 9件のコメント | WhatsAppで共有
  • 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件のコメント

 
beejei 2021-04-17

ODataはほぼ同じような方法でクエリするための規約です。しかし、application/sqlapplication/graphql を同じエンドポイントで使えるというのは……ちょっと想像がつきませんね。

 
luavis 2021-04-16

用途自体としては、SQLを直接叩くのは問題があり、elasticsearchのようにセマンティックにはGETだが、HTTP Bodyを入れて照会したい場合に使うことになるのではないかと思います。

 
tmptmp 2021-04-16

冒頭で「it was recently adopted as an IETF draft standard」とありますが、ここでいう recently は2015年のことで合っていますか? 私が見たドラフトは https://tools.ietf.org/html/draft-snell-search-method-00 なのですが、もしかしてもっと新しい変更がありますか。

 
xguru 2021-04-16

新しい HTTP SEARCH メソッド

https://datatracker.ietf.org/doc/… です。

最近 2021-03-31 にアップロードされたようです。

 
tkwlsrl 2021-04-16

bodyに情報を載せて送るなら PUT や POST を使うことになるでしょう。

これらは cache を使えないので、

SEARCH というものを使うこともできそうですね。

どうせ accept した場合にだけ送ればいいので。

 
lallablah 2021-04-16

get,post の不便さを改善しようとする方向性から、graphql を思い出しますね

 
superwoou 2021-04-16

クエリをリクエストボディで渡し始めると、いつか(あまり深く考えずに作ったサイトなら)SQL Injection のような問題が起きそうな気がしますね..

 
andrewchaa 2021-04-16

body がある GET のようなものと理解すればよさそうですね。どのみち body のバリデーションは必要でしょうし……

 
alstjr7375 2021-04-16

そうですね..