Fujihara)公式ドキュメントを読むだけではわからず、結局ソースを読んで調べたのでメモ。単純なファイルアップロードはサンプルがあったのですが、パラメタ付きで送る方法はサンプルとは違う方法しかないっぽい。Rubyのクライアントはいろいろあるみたいだけど、今回はrest-clientを利用。https://github.com/rest-client/rest-client基本的な使い方はこんな感じ。RestClient.getやRestClient.postのように簡単にリクエスト送信できる。https://gist.github.com/daipresents/528891497cc6e89f5c06e597a8dcc2e1.js?file=example1payload(日本語で貨物とか搭載量とか。ここではデータ本体という意味らしい)にいろいろ突っ込んで使うのが基本。シンプルにgetでurlを叩く。https://gist.github.com/daipresents/528891497cc6e89f5c06e597a8dcc2e1.js?file=getクエリパラメタを付与する場合。以下の例だとURLの末尾に?accept=jsonがつく。https://gist.github.com/daipresents/528891497cc6e89f5c06e597a8dcc2e1.js?file=query_parameterパラメタはネストも可能。"daipresents"}以下のようなフォームにdaipresentsが入力されているという意味になる。以下はjsonを詰め込んで送る例。https://gist.github.com/daipresents/528891497cc6e89f5c06e597a8dcc2e1.js?file=post問題はファイルをアップロードしたい場合。ドキュメントにはこの例が書かれている。https://gist.github.com/daipresents/528891497cc6e89f5c06e597a8dcc2e1.js?file=multipart1こう書くと:transferと:uploadの2ファイルをアップロードするという意味になる。試してないけどファイルはファイルオブジェクトでもパスでもいいみたいね。multipartで送るケースは以下の感じ。https://gist.github.com/daipresents/528891497cc6e89f5c06e597a8dcc2e1.js?file=multipart2ファイルがないけどmultipartで送りたいときは、以下のようにmultipartパラメタをつけてあげる。https://gist.github.com/daipresents/528891497cc6e89f5c06e597a8dcc2e1.js?file=multipart3Basic認証情報をつける場合は以下。authenticaion」https://gist.github.com/daipresents/528891497cc6e89f5c06e597a8dcc2e1.js?file=multipart4問題は、ファイルアップロードするときにクエリパラメタをつける場合。このケースだとRestClient.postメソッドは使えない。上のようにmyfileという名前で、image.jpgファイルを送る場合、リクエストに以下のようなフィールドが必要になる。filename="image.jpg"たとえば、こんな感じで書いてみるとhttps://gist.github.com/daipresents/528891497cc6e89f5c06e597a8dcc2e1.js?file=multipart5Content-Dispositionフィールドはこうなる。name="name"daipresentspayload.rbがこの辺を頑張ってくれるんだけど、パラメタ全部をファイル情報としか扱ってくれない実装に見える。なると、URL部分にパラメタを自分でつけるしかなさそうだけど、「[RoR]rest-clientでpaperclipに対応した画像フォーム送信を再現してみる」を読んでいてRestClient::Requestならいけそうなことがわかった。実際にできた例はこちら。https://gist.github.com/daipresents/528891497cc6e89f5c06e597a8dcc2e1.js?file=multipart6よかったよかった。同じpayloadのはずなんだけど、正しい書き方があるのかもしれない。ソフトウェア開発の実現に向けて奮闘中。週末に娘と息子とお昼寝しながら世界のビーチや離島を旅する夢を見る。コメントをキャンセルコメントを入力してください。以下に詳細を記入するか、アイコンをクリックしてログインしてください。アカウントを使ってコメントしています。アカウントを使ってコメントしています。新しいコメントがついたらメールで通知。コメントデータの処理方法の詳細はこちらをご覧ください。ソフトウェア開発の実現に向けて奮闘中。週末に娘と息子とお昼寝しながら世界のビーチや離島を旅する夢を見る。購読管理このバーを折りたたむ%d人のブロガーが「いいね」をつけました。