# 通信仕様書 ## 通信について - 通信方式にはhttp通信を採用する - クライアントは、http通信のpostメソッドを使ってサーバにjsonを送信する **postじゃなくてgetメソッドを使いたいときは言ってほしい** - クライアントからのリクエスト番号`req_num`によって処理の内容を変える ## ユーザの新規登録 ### クライアントからの形式 ```json { "req_num": 0 } ``` ### サーバの返信 ```json { "status": int, "user_id": int } ``` ### 処理内容 他のどのユーザとも被らない任意のユーザIDを生成して返却する。 正常に処理が完了した場合は`status`に0を代入する。エラーが発生した場合は、エラー表に従った数字を返却する。 ## 候補リストのID一覧を取得 ### クライアントからの形式 ```json { "req_num": 1, "user_id": int } ``` ### サーバの返信 ```json { "status": int, "intership_id" : [int, int…] } ``` ### 処理内容 指定されたユーザ(`user_id`)がもつ候補リストの一覧を、リスト(`intership_id`)で返却する。 候補が1つも無い場合は、`intership_id`の値は空のリストとなる。 正常に処理が完了した場合は`status`に0を代入する。エラーが発生した場合は、エラー表に従った数字を返却する。 ## 候補情報の取得 ### クライアントからの形式 ```json { "req_num": 2, "user_id": int, "intership_id": int } ``` ### サーバの返信 ```json { "status": int, "memo": String, "priority": int, "tasks": [ {"task_id": int, "task_name": String, "start_date": Date, "end_date": Date, "is_complete": Boolean}, {"task_id": int, "task_name": String, "start_date": Date, "end_date": Date, "is_complete": Boolean}, … ] } ``` ### 処理内容 指定された`user_id`と`intership_id`を基に、該当の候補の情報を返す。 正常に処理が完了した場合は`status`に0を代入する。エラーが発生した場合は、エラー表に従った数字を返却する。 ## 候補情報の新規登録・編集 ### クライアントからの形式 ```json { "req_num": 3, "user_id": int, "intership_id": int, "memo": String, "priority": int, "tasks": [ {"task_id": int, "task_name": String, "start_date": Date, "end_date": Date, "is_complete": Boolean}, {"task_id": int, "task_name": String, "start_date": Date, "end_date": Date, "is_complete": Boolean}, … ] } ``` ### サーバの返信 ```json { "status": int, "intership_id": int } ``` ### 処理内容 指定された`user_id`と`intership_id`を基に、候補情報の新規登録・上書きを行う。 `intership_id`が0の場合は、候補情報の新規登録を行う。それ以外の場合は、指定された`intership_id`の情報を上書きする。 正常に処理が完了した場合は`status`に0を代入する。エラーが発生した場合は、エラー表に従った数字を返却する。 また新規登録の場合には新しい候補IDを割り振り、`intership_id`にその値をセットする。 ## 候補情報の削除 ### クライアントからの形式 ```json { "req_num": 4, "user_id": int, "intership_id": int } ``` ### サーバの返信 ```json { "status": int } ``` ### 処理内容 指定された`user_id`と`intership_id`を基に、候補情報の削除を行う。 正常に処理が完了した場合は`status`に0を代入する。エラーが発生した場合は、エラー表に従った数字を返却する。 ## インターンシップリストのID一覧を取得 ### クライアントからの形式 ```json { "req_num": 5, "user_id": int } ``` ### サーバの返信 ```json { "status": int, "intership_id" : [int, int…] } ``` ### 処理内容 指定されたユーザ(`user_id`)がもつ候補リストの一覧を、リスト(`intership_id`)で返却する。 候補が1つも無い場合は、`intership_id`の値は空のリストとなる。 正常に処理が完了した場合は`status`に0を代入する。エラーが発生した場合は、エラー表に従った数字を返却する。 ## インターンシップ情報の取得 ### クライアントからの形式 ```json { "req_num": 6, "user_id": int, "intership_id": int } ``` ### サーバの返信 ```json { "status": int, "memo": String, "priority": int, "tasks": [ {"task_id": int, "task_name": String, "start_date": Date, "end_date": Date, "is_complete": Boolean}, {"task_id": int, "task_name": String, "start_date": Date, "end_date": Date, "is_complete": Boolean}, … ] } ``` ### 処理内容 指定された`user_id`と`intership_id`を基に、該当の候補の情報を返す。 正常に処理が完了した場合は`status`に0を代入する。エラーが発生した場合は、エラー表に従った数字を返却する。 ## インターンシップ情報の新規登録・編集 ### クライアントからの形式 ```json { "req_num": 7, "user_id": int, "interhsip_id": int, "memo": String, "priority": int, "tasks": [ {"task_id": int, "task_name": String, "start_date": Date, "end_date": Date, "is_complete": Boolean}, {"task_id": int, "task_name": String, "start_date": Date, "end_date": Date, "is_complete": Boolean}, … ] } ``` ### サーバの返信 ```json { "status": int } ``` ### 処理内容 指定された`user_id`と`intership_id`を基に、インターンシップ情報の新規登録・上書きを行う。 `intership_id`が0の場合は、インターンシップ情報の新規登録を行う。それ以外の場合は、指定された`intership_id`の情報を上書きする。 正常に処理が完了した場合は`status`に0を代入する。エラーが発生した場合は、エラー表に従った数字を返却する。 ## インターンシップ情報の削除 ### クライアントからの形式 ```json { "req_num": 8, "user_id": int, "intership_id": int } ``` ### サーバの返信 ```json { "status": int } ``` ### 処理内容 指定された`user_id`と`intership_id`を基に、候補情報の削除を行う。 正常に処理が完了した場合は`status`に0を代入する。エラーが発生した場合は、エラー表に従った数字を返却する。 ## エラー表(ステータスコード) |エラー内容|対応する`status`の番号| |-|-| |クライアントからの情報に誤りがある|1| |該当する情報がデータベースに無い|2| |サーバが正しい処理を行えなかった|3| |その他のエラー|4| ## Dateについて - Dateとは日付を表すために形式が定められた特殊な文字列(String)のことを指す。 - Dateの形式: "yyyy/MM/dd HH:mm" - yyyyは年、MMは月、ddは日、HHは時、mmは分を示している。