私は、entity()、exchange()、getforObject() の両方を使用しましたが、すべて正常に動作しているようです。しかし、さまざまなシナリオにどのメソッドが最適であるかはわかりません。各メソッドの長所と短所、どこで使用し、どこで使用しないかなど、詳細情報を提供してください。
ベストアンサー1
実際にドキュメントこれらのメソッドの目的を理解するには、RestTemplate を参照してください。長所も短所もありません。各メソッドには独自の目的があります。
getforObject()
: HTTP GET リクエストを送信し、レスポンス本文からマップされたオブジェクトを返します。
@RequestMapping(value="/{id}", method=RequestMethod.GET)
public @ResponseBody Employee employeeById(@PathVariable long id) {
return employeeRepository.findEmp(id);
}
リポジトリが指定された ID の従業員を見つけられない場合、null
ステータス で応答が送信されます200(OK)
。しかし、実際には問題がありました。データが見つかりませんでした。 を送信する代わりに200(OK)
、 を送信する必要がありました404(Not Found)
。したがって、方法の 1 つは、 を送信することですResponseEntity
(応答に関連する追加のメタデータ (ヘッダー/ステータス コード) が含まれます)。
@RequestMapping(value="/{id}", method=RequestMethod.GET)
public ResponseEntity<Employee> employeeById(@PathVariable long id) {
Employee employee = employeeRepository.findEmp(id);
HttpStatus status = HttpStatus.NOT_FOUND;
if(employee != null ){
status = HttpStatus.OK;
}
return new ResponseEntity<Employee>(employee, status);
}
ここで、クライアントはリクエストの正確なステータスを知ることができます。
exchange : URLに対して指定されたHTTPメソッドを実行し、ResponseEntity
レスポンスボディからマップされたオブジェクトを含むを返します。