2016-10-07 11 views
0

Web API(REST)を使用してデータベースに新しいアイテムを作成(POSTメソッド)する際の一般的なルールまたはベストプラクティスは何ですか?私のPOSTメソッドの本体に識別子が含まれていますか?Web API:POSTメソッドの本体に識別子が含まれていますか?

public HttpResponseMessage Post(AddressModel addressModel) 
{ 
    using (var context = new DbContext()) 
    { 
      if (context.address.Any(y => y.id == addressModel.id) 
       throw new Exception("Item already exist"); // or return BadRequest 
      ... 
    } 
} 

識別子なし::識別子で

public HttpResponseMessage Post(AddressModel addressModel) 
{ 
    if (addressModel.id != null) 
     throw new Exception("identifier cannot be set"); // or return BadRequest 

    using (var context = new DbContext()) 
    { 
      addressModel.id = GetNewId(); 
      // GetNewId generate the next correct if from data 
      // from context.address.last ... 
      ... 
    } 
} 

そしてもちろんの最初のソリューションは、より効率的であるので、あなただけの何の正解がない私に言うことができる(downvoting前)

この場合とこの場合ともう一方は他の理由でより良いです。もちろん、私は自分の意見を持っています。これは私のような経験のない人の意見です。しかし、経験豊富な人にとっては、私は彼らが躊躇せずに、そして意見がない議論でこの質問に答えることができると確信しています。だから、これは私の意見ではない質問か、なぜ私に教えてください。

+0

あなたのAPIの消費者は、Idが何であるべきかをどのように知っていますか?あなたは話しているのか聞いていますか? – Jasen

答えて

0

オブジェクトを作成する場合は、APIが一意のIDを割り当てる必要があります。それ以外の場合、呼び出し元はAPIの仕組み(どのタイプのID、独自の値を取得するかなど)について多くのことを知る必要があります。

また、呼び出し側が後で操作するために必要な場合は、割り当て済みのifを返すことができます。

関連する問題