2016-11-05 10 views
-1

私はASP.NetのWeb APIアプリケーションを構築していると私は、次のコードを持っている...ASP.NetのWeb APIのアクション結果

public IHttpActionResult GetCustomers() {    
    var customers = context.Customers.ToList(); 
    return Ok(customers); 
} 

私はので、顧客を返すために[OK]を()メソッドを使用しています私はIHttpActionResult戻り値の型を使用しています。私は次のメソッドを持っている場合は、私のActionMethodの戻り値の型がvoidであるとき

は今

public void DeleteCustomer(int id) { 
    var customerInDb = context.Customers.SingleOrDefault(c => c.Id == id); 

    if (customerInDb == null) { 
     NotFound(); 
    } 

    context.Customers.Remove(customerInDb); 
    context.SaveChanges(); 
} 

は、私はここNOTFOUND()メソッドを使用することができます?

+0

あなたのNotFoundメソッドが何をしているのか推測する必要がありますか?ヘルプが必要な場合は、より多くのコードを提供してください。 –

+0

NotFound()はASP.Net Web APIの組み込みメソッドです –

+0

コントローラでこれを検証し、IDが有効な場合にのみdeleteを呼び出す方が良いでしょうか?このようにして、単純なModelerrorを追加して、それを完了させることができます。 – Marco

答えて

0

ボイドには返品タイプがありません。だからNotFound()に電話してみることもできますが、これがコンパイルされるかどうかはわかりません。なぜあなたはちょうど箱の外に出て行かないのですかIHttpActionResult

public IHttpActionResult DeleteCustomer(int id) 
{ 
    var customerInDb = context.Customers.SingleOrDefault(c => c.Id == id); 
    if (customerInDb == null) 
    { 
     return NotFound(); 
    } 

    context.Customers.Remove(customerInDb); 
    context.SaveChanges(); 

    return Ok(customerInDb); 
} 

IHttpActionResultを使用すると、よりエレガントなバージョンです。 idが無効な場合、メソッドをただちに終了し、呼び出し元のクライアントに何か問題が生じたことを伝えることができます。すべてがうまくいけば、あなたはクライアントに親指をあげているだけです。削除されたエンティティを返すか、空のOk()だけがこの時点で問題になることはありません。

voidを使用すると、データストレージ内のエンティティが削除されることもあれば、削除されないこともあります。サーバーは応答を返さないため、クライアントは決して知りません。

+0

私はちょうど削除のためにIHttpActionResultに行き、Ok()を働かせます..しかし、私は一般的に受け入れられた慣習であることを知りたいです...ありがとう)return void –

+0

私はそのような大会について聞いたことがありません。クライアントに結果が何であるかを伝えるよりも、それほどうまく反応しないのはなぜですか? – Marco

関連する問題