私は ASP.NET MVC でカスタム コントローラーを実装していますが、次のように、クラス/列の名前とその値を識別できるように、URL でコロンを使用できるようにしたいと考えています。
http://example.com/user:chaiguy
...しかし、ASP.NET または IIS では、URL にコロンを使用できないようです。私はいくつかの掘り下げを行い、明らかにセキュリティ上の問題と見なされていますが、MVC を使用しており、すべてのURL パスを手動で処理しており (文字列として扱っているだけです)、それらをファイル システムに関連付けていないため、これはかなり確信しています適用されません。
また、カスタム Http ハンドラなどの実装についての話も聞きました。
どんな考えやアイデアでも大歓迎です。
えーと……どうして?真剣に、なぜ標準を破るのですか?– ランドルフォ
...
では、Web サービスの構築について調査することをお勧めします。WCF はそのための優れたテクノロジであり、IIS で適切にホストされます。
私はたまたま URL が好きで、WCF は私の目的には複雑すぎます。REST のように URL 互換である必要がありますが、階層をナビゲートしたり、適切にレイアウトされたものを実行したりするだけではありません。私が /users/chaiguy で抱えている問題は、何もない階層を解釈していることです。私のシステムでは、「ユーザー」はクラスであり、フォルダーではありません。user:chaiguy は、「chaiguy」の値を持つユーザー クラスのインスタンスを意味し、それは単一のエンティティであり、子エンティティを持つ可能性があります。たとえば、次のようになります。
/user:chaiguy/name
…そのエンティティの名前を表示したい。あなたの方法でこれを行った場合、次のようになります。
/users/chaiguy/name
問題は、クラスと値をどうやって知るかということです。次のように解釈できます。
/users/chaiguy:name
私のシステムでは、それは意味がありません。私が何をしているのか分かりますか?もう少し複雑な例を挙げると、複数のインスタンスから user エンティティの子を選択するとします。そのため、ユーザーは複数の電子メール アドレスを持っている場合があります。1つを選択するには、次を使用できます。
/user:chaiguy/email:me@here.com/
したがって、実際には再帰的です。これはファイル パスではなく、XPath に似ています (または、私がまだほとんど知らないことに基づいて jQuery に似ている可能性があります)。つまり、ハードワイヤされたファイル パスというよりは、動的に評価されるクエリの選択です。サーバー上で評価されます。
間違いなく、私はここで典型的な Web サイトや Web サービスを構築しているわけではありません。