私のアプリケーションが以下のフィールドを持つワークロードと呼ばれるオブジェクトを管理しているとします。私は、ユーザーがワークロードをラベルで照会するためのRESTインターフェースを公開したいと考えています。フィルタを使用してクエリを実行するにはどのような方法がありますか?
"Workload": {"id":"test1", "labels":["A", "B", "C"]}
"Workload": {"id":"test2", "labels":["A", "C", "D"]}
"Workload": {"id":"test3", "labels":["A", "B", "D"]}
質問:それはフィルタとして複数ラベルでクエリのワークロードをサポートしていますように、どのように私はRESTエンドポイントを設計していますか?
サンプルクエリ1:GET
"A"と "B"の両方を含むすべてのワークロードにします。
私はGET
という動詞を、エンドポイントとしてと考えていますが、{"labels": ["A", "B"]}
をリクエスト本体として使用しています。しかし、これはRESTfulなやり方のようには見えません
また、私はGET /labels/{label-id}/workloads
を行うことができますが、これは1回のラベルでしか動作しません。
サンプルクエリ2:私はGET
ラベル「A」または「B」が、ノー「C」を持つすべてのワークロードにする方法で、すべての残りのAPIのこの種を行うには、他の
全く分かりませんユーザーにA、B、Cで別々に問い合わせるように依頼してから、適切な設定操作を自分で行うのですか?
2番目のクエリはtracked as another question
クエリパラメータに問題がないとは思わない。あなたがそれらを避けたい理由がありますか? – mrmcgreg
私はクエリーパラメータを繰り返すかどうかを疑問に思っていました。私は 'golang'で自分のアプリケーションをコーディングしているので、現在のところ、単一のライブラリのみをサポートしているパラメータを自動的に解析するのに役立つ[サードパーティのライブラリ' httprouter'](https://github.com/julienschmidt/httprouter)を使用していますクエリパラメータ... 'workload /:workload_id/labels /:label_id'のようなもの – cookieisaac