Spring MVC と Spring Data を使用して REST API に取り組んでいます。
基本的に自動生成されたデータ (ID、更新日、作成日) を持ついくつかのエンティティを REST で公開しています。
public class Batch implements Serializable
{
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
@SequenceGenerator(name = "hibernate_sequence")
private Integer id;
@Column(name = "create_date")
private Date createDate;
@Column(name = "update_date")
private Date updateDate;
// Getters/Setters for these fields
}
リクエストを処理するためのコントローラーのセットアップ方法は次のとおりです
@RequestMapping(value = "recipe/{id}/batch", method = RequestMethod.POST)
@ResponseBody
public ResponseEntity<Batch> createBatch(@PathVariable Integer id, @RequestBody Batch batch)
{
batch.setRecipeId(id);
Batch in = batchService.createBatch(batch);
return new ResponseEntity<Batch>(in, HttpStatus.CREATED);
}
@RequestMapping(value = "recipe/{id}/batch/{batchId}", method = RequestMethod.PUT)
@ResponseBody
public ResponseEntity<Batch> updateBatch(@PathVariable Integer id, @PathVariable Integer batchId, @RequestBody Batch batch)
{
Batch existing = batchService.getBatch(batchId);
batch.setId(batchId);
batch.setRecipeId(id);
batch.setCreateDate(existing.getCreateDate());
Batch in = batchService.saveBatch(batch);
return new ResponseEntity<Batch>(in, HttpStatus.OK);
}
次に、最後にバッチ サービス public Batch createBatch(Batch batch) { Batch saved = batchRepository.save(batch); 保存されたリターン。}
public Batch saveBatch(Batch batch)
{
return batchRepository.save(batch);
}
これらのフィールドを処理するサービスにフィードするときに、これらのフィールドが更新されないようにするにはどうすればよいでしょうか? REST から PUT/POST されたバージョンからサービスに手動でコピーする必要がありますか、API からこれらのフィールドのデータを除外するより良い方法があります。約 15 の異なるリソースがある場合、それらを手動でコピーするのも非常に面倒に思えます。
ユーザーがリソースに対して GET を実行したときにそれらを表示したいのですが、提供する値が必要ないだけですが、これを管理する方法の良い例を実際に見つけることができません。