0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

想定外のHTTPリクエストを投げる方法

0
Posted at
Page 1 of 9

前提


考察:想定外のアクセスを許さないコードのテストの手法

  • 想定した操作手順では起こり得ないリクエストをどう作るか

HTTPプロトコルの特性

  • ステートレス
  • 状態がない=前回のリクエストがなくてもいい
    • ちなみにブックマークできるのはこの性質のため
  • 毎回全ての情報をリクエストの詰める仕様

ということは・・・


リクエストの構成要素

  • URL
  • ヘッダ:キーと値
    • Authorization:認証情報を入れることがある
    • Cookie:同じく認証情報を入れることがある
  • ボディ

これらの要素が分かれば、ブラウザからでなくてもHTTPリクエストを投げることができる


ツール紹介

  • F12ツール
  • Postman
  • Linux系OS:curlコマンド
  • PowerShell
    • Invoke-WebRequest
    • Invoke-RestMethod
  • JavaScript:fetch関数
  • C#:HttpClientクラス

APIをテストする

  • 任意のリクエストをプログラムで送る環境は整っている
  • つまり自動テスト化は可能!

大切なこと

  • HTTPリクエストの中身を知る
    • 大量のヘッダがある!
    • F12ツールが大活躍!
  • 認証の仕組みを知る
    • どのようなHTTPリクエストとレスポンスが交わされているか、と言う知識は重要
    • セキュリティ面からも認証の仕組みを知っていることは価値が高い
  • アプリの仕様を知る
    • 必要なヘッダなど、仕様を把握しないとHTTPリクエストを組み立てられない
    • 時々、わけの分からない仕様ものがある(CSVを送るAPIなのにContent-Type: text/csvを指定するとエラーになる、など)

最後に

  • HTTPのことをよく知ろう
  • 認証のことをよく知ろう
  • アプリの仕様をよく知ろう
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?