プロジェクトテンプレートを選択して作成します。ここで<port>ランダムに選択されたポート番号です。見るSwaggerページだと思います。試しに実行することもできます。サンプルデータ用のサービスを作成するまず次のようなTodoItemクラスを作成します。}}つぎにそれを扱うITodoItemContainerを作ります。実装は少し長くなったので下の方に書いておきます。単純にList<TodoItem>を用意してそれに足したり抜いたりしているだけです。使うためにはDIコンテナに登録する必要があります。builder.Build();が呼び出されている箇所より上でbuilder.Services.AddSingletonを呼び出せば登録することができます。今回は次のコードをを追加しました。コントローラーはControllerBaseを継承して作ります。これを継承することで応答に便利な関数を利用できます。ControllerBaseApiCotroller属性をつけると以下のようなAPIの動作を有効化できます。コントローラーにメソッドを定義することでアクションを設定できます。DELETEが含まれていると自動的にHTTPメソッドとして登録されますが、Swaggerが認識できないのでHttpGet属性をつけるほうが良いです。}ルーティングルーティングはRoute属性を用いてコントローラーまたはアクションに設定できます。ルーティングは大文字小文字の区別がありません。api/todoでもApi/Todoでも同じものとして扱われます。コントローラにRoute属性を使うとそのコントローラーでのデフォルトのルートが設定されます。部分を取り除いた文字列が入れられます。アクション、つまりメソッドにRoute属性を使うとそのメソッドだけにルーティングを設定できます。このとき、/または~/で始めるとコントローラーのルートテンプレートと結合されません。動詞テンプレートでもルーティングは設定できます。動詞テンプレートを使うこと方が良いです。動詞テンプレートは以下の6つです。}}メソッドの引数メソッドの引数はURLパスから受け取ったりリクエスト本文から受け取ったりできます。URLパスから情報を受け取るRoute属性やHttpGet属性などで{id}のように書くことで、引数idにその値を受け取ることができます。{id?}とすることで省略することができます。省略された場合引数にはデフォルトの値が入ります。リクエストヘッダーFromBodyはSystem.Text.Jsonを使って自動的にパースしてくれます。}}メソッドの返り値メソッドの返り値にはActionResult<T>を指定しておけば暗黙的なT=>ActionResult<T>のキャストが実装されているのでとりあえずは困らにと思います。型が指定できないとき、例えば匿名型を使用するときなどはActionResultを使えばよいです。そのまま値を返しても問題ありませんが、ControllerBaseに実装されているメソッドを利用することで一緒にStatusCodeを指定することもできます。使われそうなものをいかに列挙しておきます。返すオブジェクトを生成する。引数にはアクションの返り値にしたいオブジェクトを指定する。返すオブジェクトを生成する。第2引数にはアクションの返り値にしたいオブジェクトを指定する。返すオブジェクトを生成する。第1引数には作成されたコンテンツを返すアクションの名前を、第2引数にはそのアクションのURLの生成に使用するルートデータ。第3引数にはアクションの返り値にしたいオブジェクトを指定する。返すオブジェクトを生成する。クラスのドキュメントを参照してください。DELETEメソッドを追加して最終的に次のようになりました。どれを使えばいいのか全然わからなかったです。クラスのドキュメントを参照してください。記事中の〇はただの検索避けです音MADをつくろう音MADを作る動機はファンアートなどと同じですが、音MADに使われる技術は他のことにも使えます。基本的にDAWとvocalshifterの技術なので。元ネタ(素材)の作者に訴えられた場合、確実に負けます。音MADを作るなら、著作権者に目を付けられないよう、黙認されるよう常に心がけましょう。商用利用が許可されている素材だけで作れば広告を付けることはできますが、それが面白くなる確率はかなり低いです。そもそも儲けようと思わない方がいいです。