InterfaceSpecification » 履歴 » バージョン 25
aoki yuji, 2015/08/09 17:26
| 1 | 1 | MIYAZAKI Masafumi | h1. インタフェース仕様 |
|---|---|---|---|
| 2 | 1 | MIYAZAKI Masafumi | |
| 3 | 9 | MIYAZAKI Masafumi | ---- |
| 4 | 9 | MIYAZAKI Masafumi | |
| 5 | 8 | MIYAZAKI Masafumi | {{>toc}} |
| 6 | 8 | MIYAZAKI Masafumi | |
| 7 | 14 | MIYAZAKI Masafumi | h2. Questionクラス |
| 8 | 1 | MIYAZAKI Masafumi | |
| 9 | 18 | Miyazaki Masafumi | 一つ一つの "問題" に相当するクラス。問題データの入れ物。 |
| 10 | 19 | MIYAZAKI Masafumi | アプリケーションによる問題取得の際に、QuestionDBクラスによって生成される。 |
| 11 | 18 | Miyazaki Masafumi | アプリケーションによる新規問題作成の際は、別クラスにより生成する予定。(T.B.D.) |
| 12 | 15 | MIYAZAKI Masafumi | |
| 13 | 14 | MIYAZAKI Masafumi | h3. プロパティ |
| 14 | 2 | MIYAZAKI Masafumi | |
| 15 | 1 | MIYAZAKI Masafumi | | 名前 | 型 | 説明 | |
| 16 | 1 | MIYAZAKI Masafumi | | id | int | 問題の識別子 | |
| 17 | 1 | MIYAZAKI Masafumi | | question | stirng | 問題文 | |
| 18 | 7 | MIYAZAKI Masafumi | | correctAnswers | array<string> | 正解となる選択肢群。配列形式。 | |
| 19 | 7 | MIYAZAKI Masafumi | | incorrectAnswers | array<string> | 不正解となる選択肢群。配列形式。 | |
| 20 | 1 | MIYAZAKI Masafumi | |
| 21 | 14 | MIYAZAKI Masafumi | h3. メソッド |
| 22 | 1 | MIYAZAKI Masafumi | |
| 23 | 7 | MIYAZAKI Masafumi | | 名前 | 応答値 | 引数 | 説明 | |
| 24 | 17 | Miyazaki Masafumi | | get*** | 各プロパティ | なし | 各プロパティのアクセサ(getter)。***はプロパティ名を表す。 | |
| 25 | 17 | Miyazaki Masafumi | | set*** | なし | 各プロパティ | 各プロパティのアクセサ(setter)。***はプロパティ名を表す。 | |
| 26 | 10 | MIYAZAKI Masafumi | | isCorrect | bool | string | 指定した文字列が正解群(correctAnswers)に含まれるか否かの真偽値を応答する。 | |
| 27 | 1 | MIYAZAKI Masafumi | | getCorrectAnswersInJSON | string | なし | 正解群をJSON配列形式で応答する。ex) ["answer1", "answer2", "answer3"] | |
| 28 | 1 | MIYAZAKI Masafumi | | getIncorrectAnswersInJSON | string | なし | 不正解群をJSON配列形式で応答する。ex) ["answer1", "answer2", "answer3"] | |
| 29 | 1 | MIYAZAKI Masafumi | |
| 30 | 14 | MIYAZAKI Masafumi | ---- |
| 31 | 16 | MIYAZAKI Masafumi | |
| 32 | 19 | MIYAZAKI Masafumi | h2. QuestionDBクラス |
| 33 | 15 | MIYAZAKI Masafumi | |
| 34 | 18 | Miyazaki Masafumi | アプリケーションがデータベースにアクセスする際に使用するアクセサクラス。 |
| 35 | 14 | MIYAZAKI Masafumi | |
| 36 | 14 | MIYAZAKI Masafumi | h3. メソッド |
| 37 | 2 | MIYAZAKI Masafumi | |
| 38 | 4 | MIYAZAKI Masafumi | | 関数名 | 応答値 | 引数 | 説明 | |
| 39 | 6 | MIYAZAKI Masafumi | | getNumberOfQuestions | int 総問題数 | なし | 現在の総問題数を応答する。 | |
| 40 | 3 | MIYAZAKI Masafumi | | getQuestion | Question | なし | 問題を1つランダムに取り出し、応答する。 | |
| 41 | 3 | MIYAZAKI Masafumi | | getQuestionById | Question | int 問題の識別子 | 指定した識別子の問題を取り出し、応答する。 | |
| 42 | 11 | MIYAZAKI Masafumi | | getQuestions | array<Question> | int 問題数 | 指定した個数の問題をランダムに取り出し、配列形式で応答する。(※1参照) | |
| 43 | 11 | MIYAZAKI Masafumi | | setQuestion | int 登録/更新時の問題の識別子(=id) | Question 問題 | 指定した問題を登録する。(※2参照) | |
| 44 | 24 | aoki yuji | | getAllQuestions | array<Question> | なし| すべての問題を取り出し、配列形式で応答する。 | |
| 45 | 24 | aoki yuji | | deleteQuestion | なし | int 登録/更新時の問題の識別子(=id) | 指定した識別子の問題を削除する。応答はしない。 | |
| 46 | 1 | MIYAZAKI Masafumi | |
| 47 | 1 | MIYAZAKI Masafumi | ※1. |
| 48 | 11 | MIYAZAKI Masafumi | 問題は重複しないものとする。 |
| 49 | 11 | MIYAZAKI Masafumi | ただし、引数に指定された問題数が総問題数を上回る場合は問題の重複を許し、指定数分の問題を応答する。 |
| 50 | 11 | MIYAZAKI Masafumi | ※2. |
| 51 | 1 | MIYAZAKI Masafumi | idが既存の場合は、当該idの問題に対して問題文/正解群/不正解群を上書きし、当該idを応答する。 |
| 52 | 1 | MIYAZAKI Masafumi | idが既存でない場合は、当該idを無視して新規登録を行ない、新規登録時のidを応答する。 |
| 53 | 19 | MIYAZAKI Masafumi | |
| 54 | 19 | MIYAZAKI Masafumi | ---- |
| 55 | 19 | MIYAZAKI Masafumi | |
| 56 | 19 | MIYAZAKI Masafumi | h2. Questionerクラス |
| 57 | 19 | MIYAZAKI Masafumi | |
| 58 | 20 | MIYAZAKI Masafumi | クライアントアプリケーションからのリクエストに対応するレスポンスを行なうクラス。 |
| 59 | 19 | MIYAZAKI Masafumi | |
| 60 | 19 | MIYAZAKI Masafumi | h3. 外部I/F(HTTPリクエスト) |
| 61 | 19 | MIYAZAKI Masafumi | |
| 62 | 19 | MIYAZAKI Masafumi | クライアント側とサーバ側との間で、下記の属性群のやりとりを行なう。 |
| 63 | 19 | MIYAZAKI Masafumi | なお、HTTPのメソッドは GET / POST のどちらかを利用するものとし、どちらを利用するかはサーバ側のソースコード上で簡単に切り替えられるものとする。 |
| 64 | 19 | MIYAZAKI Masafumi | |
| 65 | 19 | MIYAZAKI Masafumi | | 属性名 | 属性値 | 説明 | |
| 66 | 19 | MIYAZAKI Masafumi | | request | QuestionDBクラスのメソッド名 | リクエストの要旨を指定する。 | |
| 67 | 19 | MIYAZAKI Masafumi | | arguments | 引数群 | 属性requestで指定するメソッドの引数を、JSON配列形式で指定する。 | |
| 68 | 19 | MIYAZAKI Masafumi | |
| 69 | 19 | MIYAZAKI Masafumi | h3. request毎の入出力形式 |
| 70 | 19 | MIYAZAKI Masafumi | |
| 71 | 19 | MIYAZAKI Masafumi | | request名 | 引数の形式 | 引数の例 | 応答の形式 | 応答の例 | |
| 72 | 19 | MIYAZAKI Masafumi | | getNumberOfQuestions | なし | なし | {"getNumberOfQuestions" : "総問題数"} | {"getNumberOfQuestions" : "124"} | |
| 73 | 19 | MIYAZAKI Masafumi | | getQuestion | なし | なし | {"getQuestion" : 問題} | {"getQuestion" : ["7", "これは質問文です(ID=7)", ["正答1"], ["誤答1", "誤答2", "誤答3"]]} | |
| 74 | 19 | MIYAZAKI Masafumi | | getQuestionById | ["問題の識別子"] | ["5"] | {"getQuestionById" : 問題} | {"getQuestionById" : ["5", "これは質問文です(ID=5)", ["正答1"], ["誤答1", "誤答2", "誤答3"]]} | |
| 75 | 19 | MIYAZAKI Masafumi | | getQuestions | ["問題数"] | ["2"] | {"getQuestions" : 問題群} | {"getQuestions" : [["8", "これは質問文です(ID=8)", ["正答1"], ["誤答1", "誤答2", "誤答3"]], ["5", "これは質問文です(ID=5)", ["正答1"], ["誤答1", "誤答2", "誤答3"]]]} | |
| 76 | 23 | MIYAZAKI Masafumi | | setQuestion | [問題] | ["", "ここは質問文です", ["正答1"], ["誤答1", "誤答2", "誤答3"]] | なし | なし | |
| 77 | 25 | aoki yuji | | getAllQuestions | なし | なし | {"getQuestions" : 問題群} | {"getQuestions" : [["8", "これは質問文です(ID=8)", ["正答1"], ["誤答1", "誤答2", "誤答3"]], ["5", "これは質問文です(ID=5)", ["正答1"], ["誤答1", "誤答2", "誤答3"]]]} | |
| 78 | 25 | aoki yuji | | deleteQuestion | ["問題の識別子"] | ["5"] | なし | なし | |
| 79 | 19 | MIYAZAKI Masafumi | |
| 80 | 19 | MIYAZAKI Masafumi | h3. 使用例 |
| 81 | 19 | MIYAZAKI Masafumi | |
| 82 | 19 | MIYAZAKI Masafumi | 以下のようにHTTPリクエスト(例はGETメソッド)を送信する。これは、ランダムに3問を出力するリクエストに相当する。 |
| 83 | 19 | MIYAZAKI Masafumi | (※アンパサンド「&」の直前にエスケープ「\」を挿入している点に注意されたい。) |
| 84 | 19 | MIYAZAKI Masafumi | |
| 85 | 19 | MIYAZAKI Masafumi | <pre> |
| 86 | 19 | MIYAZAKI Masafumi | $ curl -g 'http://www.fukurous.org/path/to/Questioner.php?request=getQuestions\&arguments=["3"]' |
| 87 | 19 | MIYAZAKI Masafumi | </pre> |
| 88 | 19 | MIYAZAKI Masafumi | |
| 89 | 19 | MIYAZAKI Masafumi | すると、リクエストに対応して、以下のレスポンスが得られる。(整形は説明都合であり、実際のレスポンスでは整形不要。) |
| 90 | 19 | MIYAZAKI Masafumi | |
| 91 | 19 | MIYAZAKI Masafumi | <pre> |
| 92 | 19 | MIYAZAKI Masafumi | { |
| 93 | 19 | MIYAZAKI Masafumi | "getQuestions" : |
| 94 | 19 | MIYAZAKI Masafumi | [ |
| 95 | 19 | MIYAZAKI Masafumi | ["4", "これは質問文です(ID=4)", ["正答1", "正答2"], ["誤答1", "誤答2", "誤答3"]], |
| 96 | 19 | MIYAZAKI Masafumi | ["3", "これは質問文です(ID=3)", ["正答1"], ["誤答1", "誤答2", "誤答3", "誤答4", "誤答5"]], |
| 97 | 19 | MIYAZAKI Masafumi | ["7", "これは質問文です(ID=7)", ["正答1"], ["誤答1", "誤答2", "誤答3"]] |
| 98 | 19 | MIYAZAKI Masafumi | ] |
| 99 | 19 | MIYAZAKI Masafumi | } |
| 100 | 19 | MIYAZAKI Masafumi | </pre> |
| 101 | 19 | MIYAZAKI Masafumi | |
| 102 | 19 | MIYAZAKI Masafumi | 次のリクエストは、問題を新規登録(=ID指定なしで登録)するリクエストに相当する。 |
| 103 | 19 | MIYAZAKI Masafumi | |
| 104 | 19 | MIYAZAKI Masafumi | <pre> |
| 105 | 23 | MIYAZAKI Masafumi | $ curl -g 'http://www.fukurous.org/path/to/Questioner.php?request=setQuestion\&arguments=["", "ここは質問文です", ["正答1"], ["誤答1", "誤答2", "誤答3"]]' |
| 106 | 19 | MIYAZAKI Masafumi | </pre> |
| 107 | 19 | MIYAZAKI Masafumi | |
| 108 | 19 | MIYAZAKI Masafumi | 上述の通り、リクエスト "setQuestion" は特にレスポンスを必要としない。 |