Bug(バグ) #4469
未完了JSON API diary/search が 401 エラーになる
kaoru n さんがほぼ4年前に更新
- ステータス を New(新規) から Accepted(着手) に変更
- 担当者 を kaoru n にセット
& をエスケープした場合
$ curl http://{snip}/api.php/diary/search.json?apiKey={snip}\&id=1 $ 400 Bad Request: invalid target $ curl http://{snip}/api.php/diary/search.json?id=1\&apiKey={snip} $ 400 Bad Request: invalid target
& をエスケープしなかった場合
$ curl http://{snip}/api.php/diary/search.json?apiKey={snip}&id=1 $ 400 Bad Request: invalid target $ curl http://{snip}/api.php/diary/search.json?id=1&apiKey={snip} $ 401 Unauthorized: apiKey parameter not specified.
kaoru n さんがほぼ4年前に更新
target パラメータが必要
switch ($target)
{
case 'list' :
$publicFlag = DiaryTable::PUBLIC_FLAG_SNS;
$pager = $table->getDiaryPager($options['page'], $options['limit'], $publicFlag);
break;
case 'list_mine':
$pager = $table->getMemberDiaryPager($myMember->id, $options['page'], $options['limit'], $myMember->id);
break;
case 'list_member' :
$memberId = $request->getParameter('member_id');
if (!$memberId)
{
$pager = $table->getMemberDiaryPager($myMember->id, $options['page'], $options['limit'], $myMember->id);
}
else
{
$this->forward403If($this->isAccessBlockFromMember($memberId));
$pager = $table->getMemberDiaryPager($memberId, $options['page'], $options['limit'], $myMember->id);
}
break;
case 'list_friend' :
$pager = $table->getFriendDiaryPager($myMember->id, $options['page'], $options['limit']);
break;
default:
throw new Exception('invalid target');
break;
}
kaoru n さんがほぼ4年前に更新
diary/search のリクエストパラメータ
・target 必須、以下のいずれかを指定する
diary: 指定された diary_id の日記情報を取得、ただし指定したapiKeyのメンバーに閲覧権限がない場合は「400 Bad Request」が返却される
list: 公開範囲が「Web全体に公開」、「全員に公開」に設定されている日記の一覧を取得
list_mine: 指定した apiKey のメンバーの日記の一覧を取得、公開範囲が「公開しない」ものも含む
list_member:
- member_id を指定しない場合は、list_mine と同じ一覧を取得
- 指定した member_id が指定した apiKey のメンバーのメンバーIDの場合は list_mine と同じ一覧を取得
- 指定した member_id が指定した apiKey のメンバーのフレンドの場合は、
公開範囲が「Web全体に公開」、「全員に公開」、「マイフレンドまで公開」に設定されている member_id の日記一覧を取得
- 指定した member_id が指定した apiKey のメンバーのフレンドではない場合は、
公開範囲が「Web全体に公開」、「全員に公開」に設定されている member_id の日記一覧を取得
・diary_id
target = diary の場合に必須、閲覧したい日記のIDを指定する
指定した diary_id が存在しない場合は「400 Bad Request: diary does not exist」が返却される
・member_id
target = list_member の場合に指定可能、それ以外の場合の指定は無効
指定した member_id が存在しない場合は「{status: "success", data: [ ], data_count: 0}」が返却される
・page
指定されない場合のデフォルト値は「1」
target = diary の場合の指定は無効
・limit
指定されない場合のデフォルト値は、管理画面→プラグイン設定→ opDiaryPlugin 設定→日記API取得件数 に設定された件数
target = diary の場合の指定は無効
パラメータがあっているが、データが存在しなかった場合に「400 Bad Request」を返却しているが、「{status: "success", data: [ ], data_count: 0}」を返却すべき
これは別件であるので、別チケットを作成して修正する
kaoru n さんがほぼ4年前に更新
- 関連している Bug(バグ) #4496: JSON API diary/search.json にてパラメータは正しいが結果がない場合にも HTTPステータスコード400 が返却される を追加