Closed shimoju closed 6 years ago
POST /api/card/:card-id/query/:export-formatを実装しようとしていて、
POST /api/card/:card-id/query/:export-format
:card-id
:export-format
client.query_card(1, :csv)
client.query_card(1, format: :csv)
{}
**args
というわけで既存のparams = {}になっているところを可変長キーワード引数**paramsに置き換えます。 引数がうまく渡せているかの確認のため、#loginにテストを追加しました。 ハッシュを組み立ててそれを渡したいときは不便かもと思ったら、可変長キーワード引数にハッシュをそのまま渡せるんだなー便利
params = {}
**params
#login
さらに考えると、GET /api/card/:idはclient.card(1)でもidを表すことはわかるけど、 GET /api/embed/card/:tokenは、client.embed_card('hoge')じゃなくてclient.embed_card(token: 'hoge')にしたいよなあとなる。 GET /api/embed/dashboard/:token/dashcard/:dashcard-id/card/:card-idはもうだいぶわからない。 全部キーワード引数にしてしまう方がわかりやすくなるし統一感も出るなと。 client.card(id: 1)やclient.query_card(id: 1, format: :csv)でも結構いい感じはする。
GET /api/card/:id
client.card(1)
GET /api/embed/card/:token
client.embed_card('hoge')
client.embed_card(token: 'hoge')
GET /api/embed/dashboard/:token/dashcard/:dashcard-id/card/:card-id
client.card(id: 1)
client.query_card(id: 1, format: :csv)
いまのところは「パスのパラメータで、かつリソースのidを表す引数は通常引数、それ以外はキーワード引数」というような規約でいってみて、無理ぽってなったら全部キーワード引数にしてみようかなと思う。
POST /api/card/:card-id/query/:export-format
を実装しようとしていて、:card-id
はいいけど:export-format
を普通の引数で渡すと、client.query_card(1, :csv)
のようになってわかりにくいclient.query_card(1, format: :csv)
のようにキーワード引数を使いたい{}
を省略できる仕様は最後の引数にしか使えない**args
)を使えばいいことに気がついたというわけで既存の
params = {}
になっているところを可変長キーワード引数**params
に置き換えます。 引数がうまく渡せているかの確認のため、#login
にテストを追加しました。 ハッシュを組み立ててそれを渡したいときは不便かもと思ったら、可変長キーワード引数にハッシュをそのまま渡せるんだなー便利さらに考えると、
GET /api/card/:id
はclient.card(1)
でもidを表すことはわかるけど、GET /api/embed/card/:token
は、client.embed_card('hoge')
じゃなくてclient.embed_card(token: 'hoge')
にしたいよなあとなる。GET /api/embed/dashboard/:token/dashcard/:dashcard-id/card/:card-id
はもうだいぶわからない。 全部キーワード引数にしてしまう方がわかりやすくなるし統一感も出るなと。client.card(id: 1)
やclient.query_card(id: 1, format: :csv)
でも結構いい感じはする。いまのところは「パスのパラメータで、かつリソースのidを表す引数は通常引数、それ以外はキーワード引数」というような規約でいってみて、無理ぽってなったら全部キーワード引数にしてみようかなと思う。