問題タブ [asp.net-web-api-routing]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - ASP.NET Web API のカスタム メソッド名
WCF Web API から新しい ASP.NET MVC 4 Web API に変換しています。UsersController があり、Authenticate という名前のメソッドが必要です。GetAll、GetOne、Post、および Delete を実行する方法の例を見ましたが、これらのサービスにメソッドを追加したい場合はどうすればよいでしょうか? たとえば、私の UsersService には、ユーザー名とパスワードを渡す Authenticate というメソッドが必要ですが、機能しません。
myapi/api/users/ を参照すると GetAll が呼び出され、myapi/api/users/1 を参照すると Get が呼び出されますが、myapi/api/users/authenticate?username={0} を呼び出すと&password={1} の場合、Get (認証ではなく) が呼び出され、エラーが発生します。
パラメーター ディクショナリには、'Navtrak.Services.WCF.NavtrakAPI.Controllers.UsersController' のメソッド 'System.String Get(Int32)' の null 非許容型 'System.Int32' のパラメーター 'id' の null エントリが含まれています。オプションのパラメーターは、参照型または null 許容型であるか、オプションのパラメーターとして宣言する必要があります。
Authenticate などのカスタム メソッド名を呼び出すにはどうすればよいですか?
c# - エリアごとに分割されたコントローラー
質問があります-次のことは可能ですか?
私には3つの領域があります:
各エリア内には同じ名前のApiControllerがありますが、もちろん異なる名前空間にあります。
また、構成にcurrent(使用したい)Areaの値があります。
ユーザーがブラウザーに入力した場合、ユーザーを適切なエリア(構成で見つけることができます)のコントローラーにマップしたいと思います。
たとえば、構成ファイルの現在の領域がSiteOneの場合、この要求はMvcAppliaction.Areas.SiteOne.Controllers.ValuesControllerコントローラーにマップする必要がありますが、構成ファイルの現在の領域を_DefaultのSiteTwoに変更すると、正しいコントローラーにマップする必要があります。
PS。MVCコントローラーを使用すると簡単です。ルートを設定するだけです。
c# - asp.net webapi:オプションのパラメーターを渡す方法は?
新しいasp.netWebAPIを使用しており、オプションのパラメーターを渡したいと思います。?
シンボルを使用してパラメータを渡すことができるように、属性を設定する必要があるのは正しいですか?
これがuriテンプレートで行われる前は、私は信じています。
誰か例がありますか?
私は現在、コントローラーにintとして到着するURLでIDを渡しています。しかし、私はいくつかの日付を渡す必要があります。
c# - WebApi / URL エンコーディングによるルーティング
これに関連: URL 内の URL エンコードされたスラッシュ
Mehrdad Afshari の回答 (ワイルドカード ルート パラメータ) を使用しました。ただし、複数のスラッシュは 1 つのスラッシュに変換されます。
私のルートはresource/{*url}
GET resource/abc%2fdef
私のコントローラーメソッドは with で呼び出されますabc/def
。
私のコントローラーでGET resource/abc%2f%2f%2f%2fdef
は、メソッドが再び呼び出されabc/def
ます。余分なスラッシュは失われます。
c# - 投稿パラメーターは常に null です
RC for WebAPI にアップグレードしてから、WebAPI で POST を呼び出すときに奇妙な問題が発生しています。新しいプロジェクトで生成された基本バージョンに戻りました。そう:
そしてフィドラーからの呼び出し:
デバッグすると、文字列「値」が割り当てられません。それは常にNULLです。この問題を抱えている人はいますか?
(私はより複雑なタイプの問題を最初に見ました)
この問題は ASP.NET MVC 4 に限定されているだけでなく、RC インストール後の新しい ASP.NET MVC 3 プロジェクトでも同じ問題が発生します。
c# - Web API コントローラーの複数の HttpPost メソッド
HttpPost
MVC4 Web API プロジェクトの使用を開始しています。複数のメソッドを持つコントローラーがあります。コントローラーは次のようになります。
コントローラ
ここでMyRequestTemplate
は、リクエストから来る Json の処理を担当するテンプレート クラスを表します。
エラー:
Fiddler for を使用してリクエストを行うとhttp://localhost:52370/api/VTRouting/TSPRoute
、http://localhost:52370/api/VTRouting/Route
エラーが発生します。
リクエストに一致する複数のアクションが見つかりました
上記の方法のいずれかを削除すると、正常に機能します。
Global.asax
でデフォルトのルーティング テーブルを変更しようとしましたglobal.asax
が、まだエラーが発生します。global.asax でのルートの定義に問題があると思います。これがglobal.asaxで行っていることです。
POST を使用して Fiddler でリクエストを作成し、MyRequestTemplate の RequestBody で json を渡します。
c# - クエリ文字列パラメータ名に基づくルーティング
MVC4WebAPIプロジェクトでルーティングを構成しようとしています。
名前や種類に基づいて商品を検索できるようにしたいと思います。
/api/products?name=WidgetX
-WidgetXという名前
/api/products?type=gadget
のすべての製品を返します-ガジェットタイプのすべての製品を返します
ルートは次のように構成されます。
問題は、クエリ文字列パラメータの名前が無視されているように見えるため、クエリ文字列パラメータの名前に関係なく、最初のルートが常に使用されるルートになることです。ルートを正しく変更するにはどうすればよいですか?
c# - ASP.NET Web API で複数の Get メソッドを使用したルーティング
私は ASP.NET MVC で Web Api を使用していますが、これは初めてです。私はasp.net Webサイトでいくつかのデモを行っており、次のことをしようとしています。
次のシグネチャを持つ 4 つの get メソッドがあります。
上記のすべてのメソッドについて、Web API を以下のようにしたいと考えています。
- リスト Get() =
api/customers/
- 顧客 GetCustomerById(文字列 ID) =
api/customers/13
- List GetCustomerByCurrentMonth() =
/customers/currentMonth
- 顧客 GetCustomerByUsername(文字列ユーザー名) =
/customers/customerByUsername/yasser
ルーティングを変更してみましたが、初心者なのであまり理解できませんでした。
ですから、これをどのように行うべきかを理解し、案内してくれる人がいます。ありがとう
asp.net-mvc - ASP.NETMVCWeb.Apiルーティング-実際の例
私はWeb.Apiでのルーティングと、エンドポイントを表すさまざまな方法を検討してきました。InstagramのRESTエンドポイントに出くわしました。(いくつかの素敵なドキュメントがあります)Web.Apiを使用して、Instagramユーザーエンドポイントのような状況のルーティングとコントローラーを設定するための最良の方法は何でしょうか?
これらのエンドポイントをアプリで複製したい場合は、どうすればよいでしょうか。5つのメソッドを持つ1つのコントローラー「ユーザー」が必要でしょうか。REST呼び出しをそれらのメソッドに転送するには、どのようなルーティングが必要ですか。
c# - 同じHttpVerbに対する複数のアクション
次のアクションを持つWebAPIコントローラーがあります。
そして、次のルートがマッピングされました。
次のリクエストを行うと、すべてが期待どおりに機能します。
しかし、私が次のことを要求しようとすると、
次の例外が発生します。
デフォルトルートに空のアクション名を追加しようとしましたが、それは役に立ちませんでした:
デフォルトのRESTfulルーティングをカスタムアクション名と組み合わせる方法はありますか?
編集:ルーティングメカニズムは、コントローラーの選択によって混乱することはありません。単一のコントローラーでのアクションの選択によって混乱します。私が必要としているのは、アクションが指定されていないときにデフォルトのアクションと一致させることです。それが物事を明確にすることを願っています。