Spring Web'deki ResponseEntity konusu




Spring Web'deki ResponseEntity konusunu detaylı bir şekilde inceleyebiliriz. ResponseEntity, HTTP yanıtlarını daha esnek ve özelleştirilebilir bir şekilde oluşturmanıza olanak tanıyan Spring Framework'ün bir sınıfıdır. İşte bu konunun ana noktaları:

  1. ResponseEntity Nedir?
  2. Temel Kullanım
  3. Statik Factory Metodları
  4. Headers ve Body Ekleme
  5. HTTP Durum Kodları
  6. Örnekler ve Kullanım Senaryoları


  1. ResponseEntity Nedir?

ResponseEntity, Spring Framework'te org.springframework.http paketi altında bulunan bir sınıftır. Bu sınıf, HTTP yanıtlarını tam olarak kontrol etmenizi sağlar. Yanıtın gövdesini, başlıklarını ve durum kodunu özelleştirmenize olanak tanır.

  1. Temel Kullanım

ResponseEntity'nin temel kullanımı şu şekildedir:

@GetMapping("/example") public ResponseEntity<String> example() { return new ResponseEntity<>("Hello, World!", HttpStatus.OK); }

Bu örnekte, "Hello, World!" mesajını içeren ve HTTP 200 OK durum koduyla bir yanıt döndürüyoruz.

  1. Statik Factory Metodları

ResponseEntity sınıfı, yanıt oluşturmayı kolaylaştıran çeşitli statik factory metodları sunar:


// Body olmadan ResponseEntity.ok() ResponseEntity.notFound() ResponseEntity.badRequest() // Body ile ResponseEntity.ok("Success") ResponseEntity.status(HttpStatus.CREATED).body(newResource)
  1. Headers ve Body Ekleme

Yanıta özel başlıklar ekleyebilir ve gövdeyi özelleştirebilirsiniz:


HttpHeaders headers = new HttpHeaders(); headers.add("Custom-Header", "value"); return ResponseEntity .ok() .headers(headers) .body("Response with custom header");
  1. HTTP Durum Kodları

ResponseEntity, tüm standart HTTP durum kodlarını destekler. Örneğin:


ResponseEntity.ok() // 200 OK ResponseEntity.created(URI.create("/new-resource")) // 201 Created ResponseEntity.noContent().build() // 204 No Content ResponseEntity.notFound().build() // 404 Not Found ResponseEntity.badRequest().body("Invalid input") // 400 Bad Request
  1. Örnekler ve Kullanım Senaryoları

a) REST API'de CRUD işlemleri:


@PostMapping("/users") public ResponseEntity<User> createUser(@RequestBody User user) { User savedUser = userService.save(user); return ResponseEntity .created(URI.create("/users/" + savedUser.getId())) .body(savedUser); } @GetMapping("/users/{id}") public ResponseEntity<User> getUser(@PathVariable Long id) { return userService.findById(id) .map(ResponseEntity::ok) .orElse(ResponseEntity.notFound().build()); }

b) Koşullu yanıtlar:


@GetMapping("/resource") public ResponseEntity<Resource> getResource(@RequestParam String etag) { Resource resource = // ... resource'u al return ResponseEntity .ok() .eTag(resource.getETag()) .lastModified(resource.getLastModified()) .body(resource); }

c) Dosya indirme:


@GetMapping("/download") public ResponseEntity<Resource> downloadFile() { Resource file = // ... dosyayı yükle return ResponseEntity.ok() .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + file.getFilename() + "\"") .body(file); }

ResponseEntity, Spring Web uygulamalarında HTTP yanıtlarını özelleştirmek ve kontrol etmek için güçlü bir araçtır. İstemciye gönderilen yanıtın her yönünü (durum kodu, başlıklar, gövde) hassas bir şekilde yönetmenize olanak tanır.

Please Select Embedded Mode To Show The Comment System.*

Daha yeni Daha eski

نموذج الاتصال