ASP . net CoreのAPI でHello Worldする
まず、恒例のプロジェクト作成から
テンプレートとしてすでにソースが用意されてるので、少しそこを見てみる。特定の URL を叩くと、天気情報を返却するAPIがテンプレートとして用意されているようだ。デバッグ実行する。
WeatherForecastというコントローラとデータモデルがある。
コントローラでGetに対応するメソッドでがありWeatherForecastのデータモデルのコレクションをreturnしている。
データがjson形式にシリアライズされて出力されているのがわかる。
これはどこでjsonに暗黙的にシリアライズされているのだろうか?
たぶん以下の内容が関係してくるのかな。
https://docs.microsoft.com/ja-jp/aspnet/core/web-api/action-return-types?view=aspnetcore-3.1
Hello World用のコントローラを作る
Controllerのフォルダで右クリックして追加→コントローラを選択する。
APIコントローラの空を作る
空のAPIを選んでも、何かしら準備が必要のようだ。
よし、できた。
ゲットメソッドだけ作ってみる。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
namespace WebAPIForHellowWorld.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class HelloWorldController : ControllerBase
{
[HttpGet]
public string Get()
{
return "Hello World";
}
}
}
デバッグ実行すると、できた。
ただ、json形式じゃないな。
この後でjson形式で出力する方法も書いておく。
json形式でHelloWorldを出力する
以下のようにObjectで返してもjson形式で返却できる。
WeatherForecast で見たように、自分で定義したModelもシリアライズして返してくれます。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
namespace WebAPIForHellowWorld.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class HelloWorldController : ControllerBase
{
[HttpGet]
public object Get()
{
return new { DisplayValue = "Hello World", };
}
}
}
帰ってくるjsonはこんな感じでした。
{"displayValue":"Hello World"}
デバッグ時に実行される初回アクセスのURLを変更する方法
ところで、URLは自分で打ち込む必要がある。
https://localhost:44327/api/HelloWorld
[Route("api/[controller]")]
このアトリビュートと実際に打ち込んだURLを比べて推測することができると思う。
先ほど作ったコントローラ[HelloWorldController.cs]の前部分が[HelloWorld]がapi/の後に書くURLとなる。
デバッグ実行したら、初期で飛ばされるURLは
https://localhost:44327/WeatherForecast
となっていたはずです。
これを変更する方法は
ソリューションエクスプローラにあるプロジェクトのプロパティを選択
デバッグを選択してブラウザの起動にある[ WeatherForecast ]を変更すればいいです。
今回の例でいうと、以下のように修正すればOKです。
api/HelloWorld
ディスカッション
コメント一覧
まだ、コメントがありません