Spring Boot Response Entity

devyunie·2024년 8월 23일
post-thumbnail

Response 처리

Rest API
controller -> 메서드 + URL 조합해서 Restful 하게 만들수 있다
Response-> HTTP 상태코드를 잘 활용해야 Restful 하다고 표현한다

400

  • Validation 작업을 통해서 정확한 데이터면 통과
  • 조회해서 결과가 없으면 400번을 내보낼수도 있다

Syntax

package com.hmy.springbasic.controller;
import java.util.Date;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;

//JSON Response 형태로 반환하는 컨트롤러로 인식 시키기
@RestController
//HTTP * localhost:4000/response-data/**
@RequestMapping("/response-data")
public class ResponseDataController {
//HTTP GET localhost:4000/response-data/{name}
@GetMapping("/{name}")
public ResponseDto responseBodyMethod(
	@PathVariable("name") String name
	) {
		ResponseDto response = new ResponseDto(name, new Date());
		return response;
	}
}
  
//name 문자열 데이터 반환
// date 날짜 데이터 반환
// 객체{
// "name" : "홍길동",
// "date" : "2024-08-23 ~~~~"
//}

@Getter
@NoArgsConstructor
@AllArgsConstructor
class ResponseDto {
	private String name;
	private Date date;
}

결과화면

Response Entity

  • Response의 header, status, code, status,message ,data를 직접 조작할수 있는 클래스
  • 반환타입으로 ResponseEntity타입으로 지정
  • ResponseEntity 클래스는 제너릭 으로 response body데이터 타입을 전달해야함

작업이 성공하면 HttpStatus를 200번이 아닌 BAD_REQUEST(400)번으로 반환하겠다.

@RestController
@RequestMapping("/response-data")
public class ResponseDataController {
	@GetMapping("/response-entity/{name}")
	public ResponseEntity<ResponseDto> responseEntity(
		@PathVariable("name") String name
	){
		ResponseDto response = new ResponseDto(name, new Date());
		//return new ResponseEntity<>(response, HttpStatus.BAD_REQUEST);
		return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(null);
	}
}

@Getter
@NoArgsConstructor
@AllArgsConstructor
class ResponseDto {
	private String name;
	private Date date;
}

return 2가지 방법

1. return new ResponseEntity<>(response, HttpStatus.BAD_REQUEST);
2. return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(null);

결과화면

0개의 댓글