引き続きやっている。認可や検索文字のバリデーションとかやった。今日中に実装は全部終えてDockerイメージをつくる辺りまで持っていきたかったけど、昨晩4時くらいまでFF8をやっていたので起床が13時になってしまい、進捗が出なかった。

前回まで


お約束の前回まで

作りかけているやつ


lv-fox

今日の進捗


入力値のバリデーションなど

検索に制限を持たせた。

  • 2文字以上
  • 15文字未満
  • 同時に指定できるのは3つまで
  • 英語の記号(半角)は全部弾く
  • 日本語の記号は一部弾く

感覚的にGoogle検索とかで4つ以上でAND検索したことはないので3つまでにした。英語の記号は全部弾くようにした。日本語の記号もす。とかで検索されたら大量にヒットしてしまうので一部の記号は弾くようにした。加えてSQL実行前にも念のため全部置換するようにした。

これらの場合のレスポンスはこんな感じで返ってくる。

1
2
3
4
5
{
statusCode: 422,
code: "TOO_MANY_QUERY_PARAMS",
message: "query params must be less than 4."
}

ステータスコードが入っていたり(実装都合上取り除くのがめんどくさい)英語が怪しかったりして、いい加減さ極まりないけど、これはお客様もいないしどうせ自分しか使わない完全オレオレプロジェクトなのだ。なので適当でいく。フロントで表示するときはcodeを基に日本語でエラーメッセージを表示するつもりだ。

認可

APIにトークンを用いた認可をかけるようにした。POST時にCSRF周りで403が発生してしまう。Issueがあったのでザっと流し読みした感じだと正しい挙動らしい。ドキュメントに反映されているらしいので明日以降に読む。

Documentation claims CSRF check only required for request with Cookie

検索結果は最大30件まで表示

例えばですとかで検索して検索結果が大量にヒットして、それを全部返すのも困るし、全部返されたとして見る側も見るわけがないので最大30件に絞った。30という数値は本来は設定から読み込ませるべきだけど、めんどくさいのでハードコードした。とにかく手を抜く。

実際に全記事取り込めるか確かめた

現時点の全ての記事(741件)を取り込めるかどうか確かめた。どうせ上手いこと行かないだろうと思っていたものの、予想に反してほぼほぼ問題なかった。一部記事のurltitleVARCHAR(100)だと足りなかったが、それだけだった。記事の作成日の関係でテスト用のページだけ取り込みに失敗するが、これは特に問題ない。

秒間10件以上でPOSTしていると思うんだけど、特に問題なく処理できると思わなかった。検索結果も思っていたよりも遥かに速く帰ってくる。

残り


残りはCSRFとCORSとログの出力。それと念のためDDOSのプロテクションは実装しておきたいと思っている。それが終わればDokcerイメージ作って本番にのせる。

所感


終わりが見えてきているので、気を抜かずに片付けてしまいたい。