このブログは、旧・はてなダイアリー「檜山正幸のキマイラ飼育記 メモ編」(http://d.hatena.ne.jp/m-hiyama-memo/)のデータを移行・保存したものであり、今後(2019年1月以降)更新の予定はありません。

今後の更新は、新しいブログ http://m-hiyama-memo.hatenablog.com/ で行います。

make-requestコマンド

現状のrequestを定義するなら、http://d.hatena.ne.jp/m-hiyama/20101201/1291165175 に書いたコマンド以外に make-request というコマンドが必要。make-requestは単にXJSONデータを吐き出すだけのコマンドだが、process-requestの入力データを作る。


/** 入力とパラメータからリクエストデータを作る */
command make-request
{
/** 入力のメディアタイプ */
@[without("ext")]
@[default("application/octet-stream")]
"content-type" : mediaType?,

/** 拡張子によりメディアタイプを指定 */
@[without("content-type")]
"ext" : string?,

/** HTTPメソッド */
@[default("GET")]
"method" : ("GET"|"POST"|"PUT"|"DELETE"|"HEAD")?,

/** 動詞 */
@[default("")]
"verb" : string?,
}
[
/** リクエストパス*/ path
] ::
( /** ボディなし */
null |
/** テキストまたはバイナリ */
(string|binary) |
/** フォーム */
object |
/** 明示的なフォーム指定 */
@form object |
/** JSON */
@json any
) -> WebRequest
throws @ConfilictSettings ;

  1. content-typeもextも指定されなかったら入力からメディアタイプを判断する。
  2. メディアタイプが判断できなければ、octet-stream。
  3. オプションと入力が矛盾するようなときは、@ConflictSettings例外。
  4. 例外の型は型名じゃなくてタグを書いてもよいとする。