ベンダーアプリケーションによって事前定義されたREST APIを実装するプロジェクトを構築する必要があります(消費することになります)。何千ものRESTリソースがあり、動詞(POST、GET、PUT、DELETEなど)。 ASP.NETのWeb - 私はちょうどルートを登録しながら、MapHttpRouteを呼び出すApiController
からこのようなクラスを継承することができます以前のバージョンではASP.Net Coreの非属性ルートWebApi
public class SomethingController
{
public Something Post(string name, DateTime time)
{
// ...
}
public int PostStrange(string text)
{
// ...
}
public Something Put([FromBody]Something item)
{
// ...
}
public void Delete(int id)
{
// ...
}
}
:
ので、理想的には、各リソースのために私はこのような単一のクラスを持っている必要がありますApiは私の必要に応じて行います...しかし、.NET CoreではMapHttpRoute/ApiControllerのようなものは見つけられません。ルーティングとhttp動詞の属性があり、各クラス/メソッドのすべてを明示的に定義する必要があります:
[Route("api/[controller]")]
public class SomethingController : Controller
{
[HttpPost]
public Something Post(string name, DateTime time)
{
// ...
}
[HttpPost("api/[controller]/strange")]
public int PostStrange(string text)
{
// ...
}
[HttpPut]
public Something Put([FromBody]Something item)
{
// ...
}
[HttpDelete]
public void Delete(int id)
{
// ...
}
}
何千ものRESTリソースの属性は非常に退屈で、エラーが発生しやすいです...
ここに何かがありますか?なぜ、かなり新しくて現代的なASP.NET Coreでは、REST-Apiを構築することが非常に一般的で重要なことは、古いASP.NETと比べて複雑すぎるのですか?
はい 'MapRoute'はまだそこにありますが、' MapHttpRoute'は言及されていません - それらは完全に異なるルートマッピングを提供します。 'MapRoute'はurlクエリー文字列からコントローラのアクションメソッドへのマッピングを提供するだけで、MapHttpRouteはHTTP動詞とクエリ文字列からapiコントローラのverb-methodsへのマッピングとして提供されました。 – rufanov
'MapRoute'を使うと、リソース(REST-apiの本質である)を使って別のhttp動詞で呼び出すことができる' api/something'のような単一の名前付きRESTリソースをアーカイブすることはできません。 api/something/put'、 'api/something/put'、' api/something/put'、 'api/something/putstrange'の4つの異なるURLをMapRouteでマップします – rufanov