2017-06-29 7 views
0

私はスプリングブートでREST APIを作成していますが、現在ユーザーと特定のユーザーの一覧を取得するためのマッピングがあります。今、私はCRUDインターフェイスの更新部分を作成しようとしていスプリングブートREST、一部のプロパティの更新のみを許可します

{ 
    "id": "1", 
    "name": "John", 
    "settings": [ 
     "show_ads": "true", 
     "theme": "cool-black" 
    ] 
    "last_updated": "XXX", 
    "created": "XXX" 
} 

は私のユーザーは、このように見えると言うことができます。 リクエストの本文を介して更新されるフィールドを許可するだけですが、GETパスで表示することはできますか?

この場合、名前、show_ads、テーマをユーザーが更新できるようにします。

私はコントローラの前で認証にoauth2を使用しています。管理者がいくつかのプロパティ値を変更できるようにしたいと思います。

また、ユーザーの更新要求を送信するときに、要求本体を正しくネストする必要がありますか?

PUT /users/1 
{"name": "Peter", "show_ads": "false"} (1) 
{"name": "Peter", "settings": ["show_ads": "false"]} (2) 

両方が有効か2だけか

+0

Javaコードを投稿してください。特にエンティティ。どのプロパティを読み込みたいか教えてください。あなたの大括弧で囲まれたあなたのjsonでも。中括弧にする必要があります。私はそれがちょうどタイプミスだと思う。 – Strelok

答えて

0

2つのHTTP動詞は、更新に使用するためのもので、PUT and PATCHです。 PUTは冪等体であると定義されているため、完全な更新のみが有効です。パッチを部分的に更新するために使用することができます。競合する(部分的な)更新を避けるためにE-Tagsを使用することを検討してください。

+0

私はこれが質問に答えるとは思わない。 OPは、特定のプロパティの更新を防ぐ方法を知りたいと考えています。例えば、私が 'User'エンティティを持っていて、誰もが自分のユーザ名を編集できないようにしたいとしましょう。どうすれば' username'フィールドが編集されるのを防ぐことができますか? 'PUT 'を使って' PATCH'を使用しても問題は解決しません。 – g00glen00b

関連する問題