1

ここには RESTful WebAPI サービスがあります。次のような問題に対処するために、コードとルーティングを構造化するにはどうすればよいか考えていました。

http://myapi/customer/1/files

http://myapi/customer/1/files/3

基本的に顧客情報を管理する顧客コントローラーと、ファイル情報を管理するファイルコントローラーを持っていて、顧客1のすべてのファイルが必要な場合は、最初のリクエストを行うかもしれません。

顧客のコンテキストでそれを管理したくないので、ファイルの GET がファイルの ID に焦点を合わせている場合、それをオーバーロードして実行する必要があります。

http://myapi/files/?customer=1&files=all

最初のソリューションよりも少しきれいに見えませんか?

現時点では、次のものがあります。

config.Routes.MapHttpRoute(name: SubController, routeTemplate: "{entity}/{entityid}/{controller}/", defaults: null);
config.Routes.MapHttpRoute(name: SubControllerAndId, routeTemplate: "{entity}/{entityid}/{controller}/{id}", defaults: null);

FilesController送信時に解決されるのは次のhttp://myapi/customer/1/filesとおりです。

[HttpGet]
    public HttpResponseMessage Get(string entity, string entityid, int id)
    {
        var item = "Hello " + entity + " " + entityid + " "  + id;
        return Request.CreateResponse(HttpStatusCode.OK, item);
    }

[HttpGet]
    public HttpResponseMessage Get(string entity, string entityid)
    {
        var item = "Hello " + entity + " " + entityid;
        return Request.CreateResponse(HttpStatusCode.OK, item);
    }

これは機能customerし、エンティティおよび1エンティティ ID として渡されますが、最善の解決策とは思えません。これを行うためのより良い方法はありますか?これは間違っていますか?

4

1 に答える 1