JSON レスポンス
CloudPRNTにおけるクライアントからのPOSTリクエストに対する、サーバーからのレスポンスは以下を参考に設定してください。
レスポンスヘッダー | レスポンスBody |
---|---|
HTTPステータスコード | CloudPRNTで定義されたJSONデータ |
サーバーから返されるレスポンス body は JSON フォーマットであり、下記のように設定してください。
{
"jobReady": true|false,
"mediaTypes": [ "<content media type>" ],
"deleteMethod": "DELETE"|"GET",
"clientAction": [ {"request": "<request type>", "options": "<request parameters>"} ],
"claimBarcodeReader": [ "<device name" ],
"display": [ { "name": "<device name>", "message": "<message markup>" } ]
}
サーバーの応答は待機中の印刷ジョブの有無、また Client Action 要求等をクライアントに通知します。
- "jobReady" - "true"の場合、サーバーに印刷データがあることを示しており、クライアントより印刷データ取得のための http GET 要求が発行されます。
- "mediaTypes" - サーバーによって提供されうる利用可能な印刷データのメディア(MIME)タイプのリスト。例えば、サーバーが印刷データを PNG または text/plain 形式にて提供出来る場合(※)、クライアントはこれらの選択可能なタイプから好ましいフォーマットを選択します。 ※この時サーバーはビットイメージタイプとテキストタイプのそれぞれの印刷ジョブを用意する準備が出来ていると仮定します。
- "deleteMethod" - プリンタからの印刷ジョブ完了の確認に、http DELETE または http GET のどちらを使うか指定します。このフィールドはオプションで、デフォルトでは http DELETE を使用します。WEBサーバーからリソースを取り除く標準的な方法として、DELETE を使用することを一般的に推奨していますが、WEB サーバーによっては CGI スクリプトへ DELETE 要求を渡すことができない場合があります。その代替方法として、このフィールドの GET 指定によりプリンタが特定のクエリ文字列パラメータを付けて GET 要求を送信するよう設定できます。
- "clientAction" - はクライアントの特別な動作を要求します。 Client Action 章を参照してください。
- "claimBarcodeReader" - 文字列の配列で、文字列はバーコードデータ読取用に要求されるバーコードリーダーデバイスの論理デバイス名を指定します。また代替的に、’true’の Boolean 値を指定することもできます。この場合クライアント側で定義されているデフォルトのバーコードリーダーを要求します。バーコードリーダーの要求とは、読み取られたバーコードデータがサーバーへ通知されることを意味します。この要求の有効範囲は次のポーリングまでのため、バーコードデータを継続的に受け取りたい場合は毎回このフィールドを設定してください。
- "display" - クライアント側で定義されたデフォルトカスタマーディスプレイに対するメッセージの文字列もしくはメッセージ表示用のカスタマーディスプレイの論理デバイス名およびメッセージの文字列の配列を指定してください。
文字列の配列は以下2つの文字列フィールドを含みます。- "name" - メッセージの送り先であるディスプレイデバイスの論理デバイス名を設定してください。
- "message" - ディスプレイに送信するためのメッセージで、CloudPRNTディスプレイマークアップに準じた文字列を設定してください。詳細はカスタマーディスプレイ章を参照してください。
クライアントとサーバー間の取り決めを簡素化するため、サーバーはclientAction要求と印刷を同時に設定すべきではありません。もし、"jobReady"が true で 1 つ以上のclientAction要求があった場合、クライアントはまず印刷ジョブの取得(GET)を実行します。印刷ジョブの取得後、clientAction要求を処理します。
尚、サーバーからのPOST応答に関する各HTTPレスポンスステータスコードを受け取り後のプリンタの動作例は下記となります。
ステータスコード | プリンタ動作 |
---|---|
200 | サーバーからのレスポンスを解析し、内容に応じて各種リクエストを発行します。 印刷要求がない場合: 特別な処理はせず、サーバーポーリング(POST)を継続します。 印刷要求がある場合: 印刷ジョブリクエスト(GET)を発行します。 clientAction要求がある場合: clientAction要求の実施、及び結果を含めたサーバーポーリング(POST)を行います。 |
200以外 | サーバーからのレスポンスを解析せず、サーバーポーリング(POST)を継続します。 |
サーバー POST レスポンスサンプル
- 印刷要求がない場合の通常サーバーレスポンスは以下のように設定してください。
{
"jobReady": false
}
- 印刷要求がある場合の通常サーバーレスポンスは以下のように設定してください。サーバーは印刷ジョブをテキストまたはPNG データ等にて生成してください。(mediaTypesはサーバーで用意したジョブのメディアタイプを指定してください)
{
"jobReady": true,
"mediaTypes": ["text/plain", "image/png"]
}
- プリンタへポーリング間隔とサポートされる印刷ジョブのエンコードリストを通知するための要求付きサーバーレスポンスは以下のように設定してください。
{
"jobReady": false,
"clientAction": [
{"request": "GetPollInterval", "options": ""},
{"request": "Encodings", "options": ""}
]
}