2016-07-25 9 views
0

このSO answerは、RESTful POSTメソッドでパラメータを渡したりアクセスしたりするすべての可能な方法を完全に実行します。は、RESTful POSTで情報を送信するための複数のメソッドを使用する反パターンです

複数の方法を使用する反パターンですか?

たとえば、POST HTTPメソッドのコンテンツ本体にJSONオブジェクトを渡し、パスパラメータをアンチパターンとして使用する次のメソッドを検討しますか?

@POST 
@Path("/modifyPerson/{idx}") 
@Consumes(MediaType.APPLICATION_JSON) 
public Response modifyPerson(Person newPerson, @PathParam("idx") int i) { 
    // ... 
} 

Iは両方Personidx整数パラメータを組み合わせて、より豊かなクラス(例えばPersonWithIdx)を作成し、パスパラメータに頼る必要なしに、その代わりに渡すことができます。上記のコードが私に購入する唯一のことは、この余分なクラスを作成する必要がなくなることです。しかし、それは健全ですか?

+3

pathパラメータは、データを渡すのではなく、リソースの識別にのみ使用してください。識別子をデータと見なした場合、その意味で2つの方法を使用していると思います。しかし、私はそれをデータとはみなさないでしょう –

+1

私にとっては、それは純粋に判断の呼び出しです...あなたの部分についての技術的決定。 URLの情報を基本的に*分類*したり、(URLだけを考慮しているソフトウェアに)指定するには、ロードバランシングや何を持っているのかが役に立つそのような情報を "そこに置く"かもしれません。しかし、APIが「JSONを消費する」場合は、「JSONが情報を受け取る唯一の方法である」ことをお勧めします。 (もちろん、URLの付随情報がJSONが言っているものとバグチェックと一致することを確認してください。)パターンはGUIDELINESです。 –

答えて

1

複数の方法を使用する反パターンですか?例えば

あなたがPOST HTTPメソッドのコンテンツ本体にJSONオブジェクトを通過してもパスパラメータアンチパターンを使用して、以下の方法を考えますか?

あなたが同じバッキング実装を共有する多数のリソースを持っている場合は、それらのメッセージは、特定のHTTPリクエストを消費方法を特定するためにUriTemplateを使用することは適切です。

Iは両方Personidx整数パラメータを組み合わせて、より豊かなクラス(例えばPersonWithIdx)を作成し、パスパラメータに頼る必要なしに、その代わりに渡すことができます。上記のコードが私に購入する唯一のことは、この余分なクラスを作成する必要がなくなることです。しかし、それは健全ですか?

URIから識別子を取り出して要求本体にパックすると、RPCと同じようにRESTのように聞こえるようになります。