C#
 Computer >> コンピューター >  >> プログラミング >> C#

C# ASP.NET Web APIでアクションメソッドにエイリアス名を設定する方法

アクションメソッドとは

ASP.NET Web APIでは、コントローラー内のpublicメソッドは「アクションメソッド」と呼ばれます。ここでは、ApiControllerクラスから派生したDemoControllerに、Get・Post・Put・DeleteといったHTTP動詞に対応する名前を持つ複数のアクションメソッドが定義されている例を考えてみましょう。

基本的なアクションメソッドの定義例

public class DemoController : ApiController{
    public IHttpActionResult Get(){
        // 何らかの処理
        return Ok();
    }
    public IHttpActionResult Post([FromUri]int id){
        // 何らかの処理
        return Ok();
    }
    public IHttpActionResult Put([FromUri]int id){
        // 何らかの処理
        return Ok();
    }
    public IHttpActionResult Delete(int id){
        // 何らかの処理
        return Ok();
    }
}

Web APIは、受信したリクエストURLとHTTP動詞(GET/POST/PUT/PATCH/DELETE)に基づいて、実行すべきコントローラーとアクションメソッドを自動的に判別します。上記の例では、Get()メソッドがHTTP GETリクエストを、Post()メソッドがHTTP POSTリクエストを、Put()メソッドがHTTP PUTリクエストを、Delete()メソッドがHTTP DELETEリクエストをそれぞれ処理します。この場合、Getメソッドを呼び出すためのURLは「https://localhost:58174/api/demo」となります。

ActionName属性でエイリアス名を割り当てる

アクションメソッドに別名(エイリアス名)を付けたい場合は、ActionName属性を使用します。あわせて、WebApiConfig.csのルートテンプレートに{action}セグメントを追加する変更が必要になる点に注意してください。

C# ASP.NET Web APIでアクションメソッドにエイリアス名を設定する方法

ActionName属性の使用例

using DemoWebApplication.Models;
using System.Collections.Generic;
using System.Web.Http;

namespace DemoWebApplication.Controllers{
    public class DemoController : ApiController{
        [ActionName("FetchStudentsList")]
        public IHttpActionResult Get(){
            List<Student> students = new List<Student>{
                new Student{
                    Id = 1,
                    Name = "Mark"
                },
                new Student{
                    Id = 2,
                    Name = "John"
                }
            };
            return Ok(students);
        }
    }
}

続いて、WebApiConfig.csのルートテンプレートを以下のように変更します。

config.Routes.MapHttpRoute(
    name: "DefaultApi",
    routeTemplate: "api/{controller}/{action}/{id}",
    defaults: new { id = RouteParameter.Optional }
);

これで、元のメソッド名「Get」の代わりに、FetchStudentsListというエイリアス名を使ってGet()メソッドを呼び出せるようになりました。実際のリクエストURLは「https://localhost:58174/api/demo/FetchStudentsList」のようになります。

C# ASP.NET Web APIでアクションメソッドにエイリアス名を設定する方法

  1. JavaのSwingUtilities.invokeLater()メソッドの使い方を徹底解説

    invokeLater()メソッドとはinvokeLater()メソッドは、SwingUtilitiesクラスが提供するstaticメソッドの一つで、AWTイベントディスパッチスレッド(Event Dispatch Thread)上でタスクを非同期に実行するために使用されます。このメソッドはSwingUtilities.invokeAndWait()とよく似た動作をしますが、大きな違いは、処理のリクエストをイベントキューに登録した後、すぐに呼び出し元へ制御を返すという点です。つまり、invokeLater()は引数で渡されたRunnableオブジェクト内のコードブロックの実行完了を待ちません。

  2. Rubyのエイリアス(別名定義)完全ガイド:aliasキーワードとalias_methodの違い

    Rubyでは、既存のメソッドに別名(エイリアス)を付ける方法が2つあります。 alias(キーワード) alias_method(メソッド) どちらも同じ目的で使えますが、挙動が微妙に異なるため、初心者にとって混乱しやすいトピックです。 本記事では、両者の違いを詳しく掘り下げ、しっかりと理解できるように解説していきます。 aliasキーワードとは まずはaliasから見ていきましょう。aliasはRubyのキーワードの一つです(ifやdef、classなどと同じ扱いです)。 基本的な書き方は以下の通りです。 alias print_something puts print_someth