ResponseEntity

ResponseEntity е клас в Spring Framework, който представя пълен HTTP отговор. Съдържа: код на състоянието, хедъри и тяло, в резултат на което можем да го използваме за пълно конфигуриране на HTTP отговора. ResponseEntity е генерик и всеки тип може да бъде използван като тяло на отговора.

@GetMapping("/hello")
public ResponseEntity<String> hello() {

    return new ResponseEntity<>("Hello World!", HttpStatus.OK);
}

Този код създава REST endpoint на url /hello. Методът връща ResponseEntity с тяло "Hello World!" и статус код 200 (OK).

Добавяне на HTTP хедъри:

@GetMapping("/customHeader")
public ResponseEntity<String> customHeader() {

    HttpHeaders headers = new HttpHeaders();
    headers.add("Custom-Header", "foo");
        
    return new ResponseEntity<>(
      "Custom header set", headers, HttpStatus.OK);
}

Тук се създава endpoint /customHeader. Създаваме обект HttpHeaders и добавяме персонализиран хедър с име Custom-Header и стойност foo. След това връщаме ResponseEntity с тяло “Custom header set”, включени хедъри и статус код 200.

Наред с всичко това ResponseEntity предоставя два вложени интерфейса за изграждане: HeadersBuilder и неговия наследник BodyBuilder. Можем да получим достъп до техните възможности чрез статичните методи на ResponseEntity. За най-използваните HTTP статус кодове са предвидени следните статични методи:

BodyBuilder accepted();
BodyBuilder badRequest();
BodyBuilder created(java.net.URI location);
HeadersBuilder<?> noContent();
HeadersBuilder<?> notFound();
BodyBuilder ok();

Примери за използване:

@GetMapping("/hello")
public ResponseEntity<String> hello() {
    return ResponseEntity.ok("Hello World!");
}

В този пример използваме статичния метод ResponseEntity.ok(). Той връща отговор със статус код 200 и тяло “Hello World!”:

@GetMapping("/customHeader")
public ResponseEntity<String> customHeader() {
    return ResponseEntity.ok()
        .header("Custom-Header", "foo")
        .body("Custom header set");
}

Този код създава endpoint /customHeader със статус код 200. Методът .header(“Custom-Header”, “foo”) добавя персонализиран хедър. След това .body(“Custom header set”) задава тялото на отговора и завършва изграждането на ResponseEntity:

Тъй като BodyBuilder.body() връща ResponseEntity вместо BodyBuilder, трябва да бъде извикан последен.

@PostMapping("/hello")
public ResponseEntity<String> hello(@RequestParam String name) {
    String message = "Hello, " + name + "!";
    return ResponseEntity.status(201).body(message);
}

Този endpoint /hello с метод POST връща 201 Created, когато успешно създаваме ресурс. Отговорът връща съобщението, което включва името, подадено като параметър.

@PostMapping("/checkName")
public ResponseEntity<String> checkName(@RequestParam String name) {
    if (name == null || name.trim().isEmpty()) {
        return ResponseEntity.badRequest().body("Name cannot be empty");
    }
    return ResponseEntity.ok("Hello " + name + "! Name is valid");
}

Endpoint /checkName проверява дали параметърът name е празен. Ако е празен, връща 400 Bad Request, в противен случай – 200 OK с персонализирано съобщение. Методът .body() задава съдържанието на HTTP отговора, което се връща на клиента.


This site uses Just the Docs, a documentation theme for Jekyll.