1
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?

More than 3 years have passed since last update.

Chromeの検証ツールでXHR通信の中身を覗いてみる

Last updated at Posted at 2021-02-22

はじめに

ブラウザの検証ツールには便利な機能がたくさんありますが、今回はその中でもNetworkタブのXHR通信に絞って、
どんなことがわかるのかについて、解説したいと思います。

Chrome検証ツールとは

WebページのHTMLやCSSの中身や、ブラウザがどんな通信をしているかを確認することができます。(もちろん他にも機能はあります)

MacOSの場合は、 command + option + i で開くことができます。
あるいは右クリック → 検証 でも同様に開けます。

XHR通信の中身を覗いてみる

Qiitaの通信内容をchrome検証ツールを使って見てみます。

graphql.png

Nameタブのgraphqlをクリックすると、添付画像右のような情報が表示されます。

リクエスト先のURLやHTTPメソッド、HTTPステータス等がわかります。

Qiitaは一部の通信にGraphQLを採用していたんですね。

Headersタブを下にスクロールすると、送ったリクエストの中身も確認することができます。

request-payload.png

GraphQLのQueryをargument付きで投げていることがわかります。

投げているQueryも確認することができます。

query getUserPaginatedArticles($urlName: String!, $page: Int!, $per: Int!) {
  user(urlName: $urlName) {
    paginatedArticles(page: $page, per: $per) {
      ...UserPaginatedArticlesResult
      __typename
    }
    __typename
  }
}

fragment UserPaginatedArticlesResult on ArticlePage {
  items {
    createdAt
    encryptedId
    isLikedByViewer
    isPublic
    likesCount
    linkUrl
    title
    uuid
    author {
        ... on User {
          isUser
        urlName
        __typename
      }
      ... on Organization {
        isUser
        urlName
        __typename
      }
      __typename
    }
    tags {
        urlName
      name
      __typename
    }
    __typename
    }
    pageData {
      currentPage
    isFirstPage
    isLastPage
    nextPage
    prevPage
    totalPages
    __typename
  }
  __typename
}

レスポンスの中身は、PreviewタブかResponseタブで確認することができます。

response.png

他のサイトのXHR通信の中身を覗いてみる

以下の添付画像をご覧ください。

example1.png

access-tokenやclientがResponseHeaderに含まれているあたり、

「認証はToken方式で」
「おそらくdevise_token_authを使っている」

のではないかと思いますが、Previewも見てみましょう。(レスポンスの一部を切り取っています)

{
  "user": {
    "id": 99999999,
    "provider": "email",
    "uid": "sample@gmail.com",
    "allow_password_change": false,
    "email": "sample@gmail.com",
    "created_at": "2021-02-20T00:00:00.000+09:00",
    "updated_at": "2021-02-20T00:00:00.000+09:00",
    "deleted_at": null,
    "name": "サンプル太郎",
  }
}

devise_token_authを導入していると用いられる「provider」や「uid」があったため、おそらく仮説は当たっていると思います。
また、deleted_atがあるので、論理削除を実現するGemである「acts_as_paranoid」も導入されているのではないかなと思いました。

このように、Network通信の中身を覗くことで、そのサイトでどんな技術を使っているか、という情報を得られます。

実務ではどう使うのか

主に、

・入力した値が意図した通り送信されているか
・意図した値が返ってきているか

という用途で使うことが多いです。

入力した値が意図した通り送信されているか

フォームに入力された値をjavascriptでよしなに加工して送信する、といった処理がある場合、値を加工する部分でバグがあり意図した挙動になっていないことがありますが、そういった挙動の確認をするために検証ツールを使うことがあります。

意図した値が返ってきているか

APIの戻り値をjavaScriptで加工してで表示するというケースはよくあると思いますが、フロント側で欲しい値がなぜか返ってきていない、というケースで、PreviewタブやResponseタブの値を見て確認するというケースがよくあります。

まとめ

検証ツール便利すぎてこれ無しだと生きていけません。

1
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
1
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?