LoginSignup
60
86

More than 5 years have passed since last update.

REST Webサービスの作成が僕には難しすぎたので、誰にでも分かるよう手順を残す。

Last updated at Posted at 2017-07-14

まえおき

せっかくC#を勉強しているのなら、なんか流行りの技術をやってみたい!と思い立ち、いろいろWebを眺めていたところ、XamarinとかWPFとかUWPとかREST APIというのがイマドキらしい...ということで、REST Webサービスを作成してみることにしました(この時は、ま、ググればなんとかなるでしょと高を括っていた)。

しかし、「C# REST サービス」でググって出てきた数々の記事を読んでも、難しそーな横文字がバンバン出てきて心が折れてしまい…。正直、ANSI Cより新しい技術についていけない僕には、まず記事の内容が難しすぎました。

C#での実装方法は分かったけど、コンパイルしたものを実行するにはどうすりゃいいのさ??ママー、main関数が無いよー!

例えるなら、「オススメの海外旅行」の記事を読んだはいいけど、まず飛行機の切符の買い方や、飛行機の乗り方がわからない…そういう状態です。

神解説との出会い

...という状態であったのですが、ついに神解説を見つけました。

Getting Started with ASP.NET Web API 2 (C#)

このレベルにまで落とし込んでくれれば、さすがの僕にも理解できました。
ただ、上の記事には書かれていない手順もあり、若干つまずいた部分もあったので、本記事ではその部分を補完した、もはや犬でも猫でもわかる「REST Webサービス作成と動作確認の手順」を示します。

本記事の手順を実施して何ができるか

  • REST Webサービスプログラムの作成(神解説で解説されています)。
  • 作成したサービスをコマンドプロンプトから起動する。
  • WebブラウザからサービスのURLを開くと、レスポンスが返ってくることを確認する。

本記事の手順で使用するもの

  • パソコン一式
  • Microsoft Windows 10 Pro
  • Microsoft Visual Studio 2017 Community
  • IIS Express 10.0
  • Microsoft Edge

Windows 10と新規にインストールするものは特に無いと思います。IIS Expressですが、これは「ASP.NET と Web開発」ワークロード(後述)のインストール時に一緒にインストールされるコンポーネントのようです。

1.ワークロードのインストール

神解説の中では、プロジェクト新規作成のテンプレートから「ASP.NET Webアプリケーション」を選択する手順がありますが、そんなテンプレート見つからないよ~(T T)という人は、事前にVisual Studioインストーラーから「ASP.NET と Web開発」というワークロードをインストールしておく必要があります。

vs2017_installer.png

Visual Studioインストーラー(上の画像)は、Visual Studioの「新しいプロジェクト」ウィンドウから「Visual Studioインストーラーを開く」のリンクをクリックすると起動します。

2.REST APIサービスの実装(C#)

サービスプログラムの実装ですが、以下の記事の手順をなぞるだけです。本記事の手順は、以下記事で作成されたアプリケーションを前提としていますので、ソースコードは一字一句違わずに写経します。

Getting Started with ASP.NET Web API 2 (C#)

本記事ではWebブラウザでの簡易な動作確認にとどめるため、ここでは「Create a Web API Project」から「Adding a Controller」までの手順をなぞるだけで十分です。

コーディングが終わったらビルドします。

3.物理パスとポート番号の確認

ここが一番はまったのですが、ビルドして生成されたサービスプログラムを、どうやって起動すればいいの?という点です。

まず、RESTサービスを起動するのに必要な情報は、サービスの物理パスポート番号です。それを調べるために、いったんVisual Studioからサービスのインスタンスを開始します(以下図)。

vs2017_debug.png

確認メッセージ(以下)が表示された場合、「デバッグの続行」を選択します。

vs2017_continue_debug.png

自動的にブラウザが起動し、以下のようなエラー画面が表示されるかもしれませんが、無視して下さい。

msedge_error.png

すると、タスクトレイに変なアイコン(以下図では4つのうち右下)が表示されますが、これがIIS Expressのアイコンになります。

iisexpress_in_task.png

このアイコンを右クリックして表示されるメニューから「すべてのアプリケーションを表示」をクリックします。

iisespress_context_menu.png

以下のような画面が表示されるので、一覧から「Development Web Site」を選択すると、下にパスが表示されます。また、ポート番号も確認できます(以下例だと「51585」)。このパスとポート番号をメモっておきます

iisexpress_detail.png

4.サービスの起動(コマンドプロンプト)

コマンドプロンプトを起動し、IIS Expressのディレクトリに移動し、以下のコマンドを実行します。物理パス(C:\Users\~)とポート番号は、上でメモったものを指定します。

サービスの起動コマンド
cd /d "C:\Program Files\IIS Express"
iisexpress.exe /path:"[物理パス]" /port:[ポート番号]
コマンドの実行結果
C:\Program Files\IIS Express>iisexpress.exe /path:"C:\Users\yz2cm\OneDrive\Documents\Visual Studio 2017\Projects\ProductsApp\ProductsApp" /port:51585
Copied template config file 'C:\Program Files\IIS Express\AppServer\applicationhost.config' to 'C:\Users\yz2cm\AppData\Local\Temp\iisexpress\applicationhost201771422524518.config'
Updated configuration file 'C:\Users\yz2cm\AppData\Local\Temp\iisexpress\applicationhost201771422524518.config' with given cmd line info.
Starting IIS Express ...
Successfully registered URL "http://localhost:51585/" for site "Development Web Site" application "/"
Registration completed
IIS Express is running.
Enter 'Q' to stop IIS Express

IIS Expressは「Q」キー押下で停止します。

5.Webブラウザからのリクエスト

サービスを起動した状態で、Webブラウザを起動し、以下のURLを開きます。

http://localhost:[ポート番号]/api/products/

msedge_result.png

お、ちゃんとJSON形式でレスポンスが返ってきてますねえ。うれしい。

試しに、引数にId(=1)を指定してリクエストしてみます。

http://localhost:[ポート番号]/api/products/1
msedge_result2.png

やったね!v(^ ^)

おわりに

くぅ疲です。次回は、C#でクライアントアプリ(REST Webサービスにリクエストを投げて、レスポンスを表示するクライアントアプリケーション)を作成する予定です。

(2017年7月15日追記)クライアント編をアップしました。
続・REST Webサービスの作成が僕には難しすぎたので、誰にでも分かるよう手順を残す。(クライアント編)

60
86
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
60
86