2016-04-10 33 views
1

Web APIコントローラのURIにIDでHTTP GETリクエストを作成しようとしていますが、適切な機能を取得できないようです同様に正常にIDを取得:角度 - Owin + Web APIコントローラへのパラメータでHTTP GETリクエストを作成できない

角度コントローラ

$http({ 
     method: 'GET', 
     url: 'api/Files/Id/' + blobId, 
     responsetype: 'arraybuffer' 
    }).then(function successcallback(response) { 

     console.log(response); 
     //logic 

    }, function errorcallback(response) { 

    }); 

Startup.cs

config.MapHttpAttributeRoutes(); 
config.Routes.MapHttpRoute("DefaultAPI", 
     "api/{controller}/{id}", 
     new { id = RouteParameter.Optional }); 

ウェブAPIコントローラ

[RoutePrefix("api/Files")] 
public class FileController : ApiController 
{ 
    // /api/Files/ 
    [Authorize] 
    [Route("")] 
    public IHttpActionResult GetAll() 
    { 

    } 

    // /api/Files/Id/ 
    [Authorize] 
    [Route("Id")] 
    public async Task<HttpResponseMessage> Get([FromUri] string id) 
    { 
    } 
} 

要求が見つかりませんを返しています。

URL:URLをすることになっている '../api/Controller/File/' + blobId

または

URL:」../ API /コントローラ/ファイル/ '

と私は異なる方法でIDを渡す必要がありますか?お使いのコントローラをcontroller入力する必要が

... 
[Route("{Id}")] 
public async Task<HttpResponseMessage> Get([FromUri] string id) 
... 

をそして、あなたはドント:

答えて

3

また、あなたが書く必要があるあなたは

... 
[RoutePrefix("api/Files")] 
public class FileController : ApiController 
... 

を書いたしかし、あなたの角度のコードで、あなたは/api/Controller/File/

を使用していますFileControllerであり、そのためにルート"api/Files"を定義しました。

.../api/api/Files/と書く必要があるかもしれませんが、それについてはわかりません。あなたはそれをテストする必要があります

+0

私は私は現在、 – Pipeline

+0

を取得します。httpからコントローラメソッドを呼び出すためにしようとしています方法は、あなたが私の他の提案を試してみましたの修正私のポストにタイプミスがありましたか? – kabaehr

+0

私はOPの中にある現在のコードで../を削除しましたが、まだ正常に動作しています。なぜ私が.. /を最初に使用していたのかわかりません。 – Pipeline

2

$ httpサービスで使用しているURLが間違っています。ウェブAPIコントローラでは、以下のアノテーションでのルートを定義している:

[RoutePrefix("api/Files")] 

だから、これはあなたのコントローラのルートです。次のことを試してみてください。

$http({ 
     method: 'GET', 
     url: '../api/Files/' + blobId, 
     responsetype: 'arraybuffer' 
    }).then(function successcallback(response) { 

     console.log(response); 
     //logic 

    }, function errorcallback(response) { 

    }); 
+0

私は誤植を持っていたと思いますが、自分のコードに正しいルートがあったときにコントローラを入力しました – Pipeline

+0

$ httpコールのURLから/ Idを削除しましたか? –

+0

試しました: '../ api/Files/'+ blob現在OPにあるコントローラコードで検出されています – Pipeline

関連する問題