最近、DjangoやDRFといったWeb APIを学習しているのですが、それに送信されるリクエストに関する基本的な知識をまとめました。
ごく初歩的な内容で恐縮なのですが、自分用の備忘録として記録しておきたいと思います。
リクエストの構成要素
Web APIへ送信されるリクエストは、大きくドメインとパスの二部分で構成されている。
まずはドメインが来て、その後ろにパスが付いてくる。
ドメイン
ドメインとは、どのサーバーにリクエストを送るのかを決定する部分。インターネット空間上での住所のようなもの。
世界中に無数にあるコンピュータの中から、アクセスしたい特定のサーバーを指定するためのもの。
パス
パスは、指定したサーバーのどの機能にアクセスしたいのかを指定する部分。ドメインが住所なら、パスは建物の部屋番号のようなもの。
どの処理をしてほしいのか、どのデータにアクセスしたいのか、といった要求をパスとしてAPIに送信する。
メソッド
さらに、そこにメソッドが加わる。
GETやPOSTなどのメソッド(CRUD処理)によって、ユーザーがWebサービスを通して、APIに対して特定のデータを呼び出したり、データを投稿したりすることができる。
例えば、Eコマースサイトにおいて、GETメソッドと合わせて商品のIDをパスとして送信することで、該当する商品の購入ページにアクセスする事ができる。
ローカルホストとポート番号
開発者が開発中の自分の機能にアクセスする際に使用するのがローカルホスト。
ローカルホスト
これは、自分のPCを指すドメインの事である。
インターネット上のドメインにアクセスするのではなく、自分のPC上で動いているプログラムにアクセスするように指示を出すもの。
開発者が起動中のローカルホストにアクセスする事によって、自分のローカルPC上で、開発途中のシステムの動作確認をすることができる。
インターネットを経由しないため、PCがネットに繋がっていなくても動作する。その上、自分で完結するため通信速度が非常に速い。
ローカルホストとは、以下のようなドメインを指す。これらは、いずれも同じ意味で使われる。
- ドメイン:localhost
- IPアドレス:127.0.0.1
ポート番号
ローカルホストで開発をする際、その後ろに番号が付く。これはポート番号というもので、ローカルのPC上のどのプログラムと通信するのかを指定する。
結論、この番号は自分で任意の番号を決めて動かすことは技術上可能である。しかし、実務での慣習では、どのサービスがどの番号で使われるかはあらかじめ決められている。
例:Djangoなら8000番、など
dockerfileなどでポート番号を決める際は、そのフレームワークがデフォルトで何番を使おうとしているのかを確認して、その通りにするのがトラブルも少なく、シンプルである。