0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

バイナリデータを簡単に送信する方法:サーバーインテグレーションガイド

Posted at

はじめに

バイナリデータをファイルとして保存したものをバイナリファイルと呼びます。サーバーへバイナリデータを送信することは、データサイズの削減、処理速度の向上、様々なデータ表現の実現などのメリットがあります。本文では、バイナリデータの基本情報を解説した上、使いやすいツールを使ってバイナリデータを簡単にサーバーに送信する方法を皆さんに紹介します。

バイナリデータとは

バイナリデータとは、二進数のデータを意味して、コンピュータが内部的に使用する2進数(0と1)のデータのことを指します。コンピュータが「0」と「1」の2文字しか解釈できないため、コンピュータがデータを読み取れるため、バイナリデータが非常に汎用されています。具体的には、バイナリデータは次のような特徴があります:

  • テキストデータではなく、人間に直接読み取れないデータフォーマットである
  • 0と1のビットの並びで表現される
  • 画像ファイル、動画ファイル、実行ファイルなど、コンピュータが処理・実行するためのデータがこれに該当する
  • テキストよりも小さいデータサイズで表現できる場合が多い
  • エンコード/デコードすることでテキストデータとの変換が可能

バイナリデータを扱う場合、特別な注意が必要です。例えば人間が直接編集できないため、バイナリエディタという専用ツールを使用することが多いです。

バイナリファイルとは?

バイナリデータを保存するファイルをバイナリファイルと呼ばれています。実際には、我々もバイナリファイルを毎日も扱っています。バイナリファイルにはさまざまな種類がありますが、主なものとしては以下があげられます。

1. 実行ファイル

  • Windowsのexeファイル、LinuxのELFファイルなど
  • プログラムを実行するのに必要な機械語やデータが含まれる

2. 画像ファイル

  • JPEG、PNG、GIFなどの画像データが含まれる
  • 圧縮されていることが多い

3. 動画ファイル

  • MP4、AVI、MKVなどの動画データが含まれる
  • 画像よりも大きなデータサイズであることが多い

4. 文書ファイル

  • Microsoft WordのDOCXファイル、PDFファイルなど
  • テキストや画像、レイアウトデータが含まれる

5. 圧縮ファイル

  • ZIP、RAR、7zなどによる圧縮データ
  • 容量削減やまとめた保存ために用いられる

この他にも音楽ファイルや各種データベースや通信ログなど、コンピュータが扱うほとんどのデータはバイナリ形式で保存されています。

バイナリデータのアップロードについて

上記のように、コンピューターは、バイナリデータのみを扱えますので、実際にWebアプリの開発中に、ファイルをバイナリデータのフォーマットでアップロードするのがごく一般です。それでは、なぜかバイナリデータというフォーマットでファイルをアップロードしますか?実際には、様々なメリットがあると思います。

データサイズを小さくできる

テキストデータと比べて、同じ情報量をより小さいデータで表現できることがあります。容量削減が可能なため転送や保存に適しています。

処理速度が速い

文字列処理に比べて単純なデータ構造の方がコンピュータの処理速度は速くなります。大量のデータを高速に扱う用途に適しているためです。

様々なデータ表現ができる

文字だけでなく画像、音声、動画など、コンピュータが扱うほぼすべてのデータをバイナリ形式で表現できます。複合的なデータを1つにまとめることができる利点があります。

ハードウェアやOSとの親和性が高い

コンピュータのハードウェアやOSが操作するのは機械語のバイナリ命令です。ハードウェアに依存しない抽象的な表現よりも、バイナリデータの方が親和性が高く効率的となります。

以上の理由から、様々な場面でバイナリフォーマットが活用されているのです。欠点もあるので、用途に応じて適切なデータ表現を選択することが大切です。

Apidogでバイナリデータをサーバーに送信

Apidogは、非常に包括的なAPI管理ツールとして、APIの設計、仕様書生成、開発、テスト、モックなどにも対応しています。Apidogを利用して、APIのサーバーサイドにバイナリデータを送信することも非常に簡単です。

ステップ⒈既存のAPIを開くか、新しいAPIを新規に作成して、APIエンドポイントのURLを入力した上、HTTPメソッドをPOSTに指定します。

file-upload-api-1.png

ステップ⒉Body」タブに切り替え、Content-Typeを「Binary」にし、ここでバイナリデータを選択してアップロードすることができます。

binary-apidog-2.png

バイナリファイルをアップロードした上、「送信」ボタンをクリックして、このバイナリファイルをサーバーに送信することができます。

Axiosでバイナリデータをサーバーに送信

また、コーディング能力があるユーザーは、Axiosを利用してバイナリデータをサーバーに送信することも可能です。

ステップ⒈FromDataオブジェクトの作成

まずはバイナリデータをFromDataオブジェクトに追加する必要があります。FromDataは、テーブルのフォーマットでデータをサーバーに送信します。

let formData = new FormData();
formData.append('file', binaryData, 'filename.ext');

ここでの 'file' はサーバーサイドがで取得したファイルのフィールド名なり、binaryData はアップロードしたバイナリデータになります。このバイナリデータはファリル( <input type="file"> から取得するファイル)か、任意のBlobオブジェクトです。また、'filename.ext' はサーバーに保存しようとするファイル名になります。

ステップ⒉Axiosの設定

そして、Axiosでリクエストを設定する必要があります。特に headers です。ファイルをアップロードするので、ブラウザが自動的に Content-Typemultipart/form-data に設定されるので、非常に便利です。

const config = {
  headers: {
    // `Content-Type` はブラウザに自動的に設定される
    'Accept': 'application/json', // サンプルです、実際のニーズに従って設定
  },
};

ステップ3. リクエストの送信

最後に、Axiosを利用してこの formData オブジェクトを送信します。

axios.post('your-server-endpoint', formData, config)
  .then(response => {
    // 处理成功的响应
    console.log(response.data);
  })
  .catch(error => {
    // 处理错误
    console.error(error);
  });

ここの 'your-server-endpoint' は、ファイルをアップロードしたいサーバーのエンドポイントURLになります。

ご案内:サーバーサイドも multipart/form-data のリクエストを受信できて、ファイルを処理できるように正しく設定する必要があります。

まとめ

ApidogはAPIの设計やテスト、モックを支援する包括的なプラットフォームです。このApidog上でバイナリデータの送信は簡単に実現できます。具体的にはAPIエンドポイントを設定し、Bodyタブのコンテンツタイプをバイナリに指定した上で、バイナリファイルを選択・アップロードします。送信ボタンを押すことで、指定したAPIに対してそのバイナリデータが送信されるという流れです。

このようにApidogを活用することで、API開発者はコードを書くことなく、バイナリデータをサーバーに送信するテストが可能となります。ただし、バイナリデータの取り扱いにはその特性上、セキュリティ等の観点から注意が必要です。

最後まで読んでくださり、ありがとうございました!
この記事を読んで少しでも理解を深めていただければ幸いです!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?