1

私はこれをずっと見つめていたかもしれませんし、WebAPIの背後にある考え方を誤解しているかもしれませんが、ルーティングテーブルがCUSTOMIZEDアクション名に応答するようにする方法があるかどうかを調べています。たとえば、次のようにします。

// -> /api/student/studentRecord?studentId=1
[HttpGet]
public Student StudentRecord(int studentId){
    //Do Something and return the Student Record
}

// -> /api/student/newStudent?name=john
[HttpPost]
public int NewStudent(String name){
    //Do whatever and return the new id
}

私はここで何が欠けているのか、あるいはそれができるのかどうかさえわかりません。私はしばらくの間インターネットを精査してきましたが、それを理解できないようです。

webAPIのポイントは、各コントローラーにPUT、POST、GETなどを1つだけ持つことですか、それとも、やりたいことを実行できますか?

ルーティングをいじってみましたが、もっと悪くなったと思います!今何かを呼び出そうとするたびに、同じメソッドが呼び出されます。

これは私がルート設定ファイルに持っているものです:

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

2 に答える 2

2

上にリンクされている「魔法の」アクションセレクターも必要ありません(かなりクールに聞こえますが)-WebApiではaction、URLに名前(=オーバーライドされない限りコントローラーメソッド名)を含めることができます。

したがって、あなたの例では:

// -> /api/student/studentRecord?studentId=1
[HttpGet]
public Student StudentRecord(int studentId){}

ルーティングテンプレートは次のようになります。

routeTemplate: "api/{controller}/{action}"
  • コントローラーは学生に解決されます
  • Studentrecordへのアクション
  • クエリ文字列パラメータをテンプレートに入れる必要はまったくないと思います(URL部分に追加できるようにしたい場合を除く)

詳細については、こちらをお読みください: http ://www.asp.net/web-api/overview/web-api-routing-and-actions/routing-in-aspnet-web-api

于 2013-01-17T21:44:19.990 に答える
2

こちらをご覧くださいMagicalWebAPIアクションセレクター–単一のコントローラーでのHTTP動詞とアクション名のディスパッチ

たとえば、さらに優れたAPIルートを使用できます。

/ api / student / 1 / studentrecord / 2 /

于 2013-01-17T21:06:40.333 に答える