Back-end/Spring

[Spring] 컨트롤러 Request, Response 간단한 예시

shoney9254 2023. 5. 16. 17:27
반응형

Request 받는 예시

자주 사용하는 1. 쿼리파라, 2.변수패스, 3. json 바디 예시를 작성했습니다.

1. 쿼리 파라미터

@RestController
@RequestMapping("/api/books")
public class BookController {
    
    @Autowired
    private BookService bookService;

    @GetMapping("/search")
    public List<Book> searchBooks(@RequestParam("keyword") String keyword) {
        return bookService.searchBooks(keyword);
    }
}


위의 예제에서는 `@RequestParam` 어노테이션을 사용하여 `keyword`라는 이름의 쿼리 파라미터를 전달받습니다. `/api/books/search?keyword=java`와 같은 요청을 처리합니다.
 


2. URL 경로 변수(Path variable)

@RestController
@RequestMapping("/api/books")
public class BookController {
    
    @Autowired
    private BookService bookService;

    @GetMapping("/{id}")
    public Book getBookById(@PathVariable("id") Long id) {
        return bookService.getBookById(id);
    }
}


위의 예제에서는 `@PathVariable` 어노테이션을 사용하여 `id`라는 이름의 경로 변수를 전달받습니다. `/api/books/1`와 같은 요청을 처리합니다.


3. JSON 

@RestController
@RequestMapping("/api/books")
public class BookController {
    
    @Autowired
    private BookService bookService;

    @PostMapping
    public Book addBook(@RequestBody Book book) {
        return bookService.addBook(book);
    }
}


위의 예제에서는 `@RequestBody` 어노테이션을 사용하여 JSON 형식의 데이터를 전달받습니다. 클라이언트에서는 HTTP POST 요청을 보내며, 요청 본문에 JSON 형식의 Book 객체를 담아 전송합니다.



Response

 

다음은 Spring MVC에서 자주 사용되는 response 유형 예시입니다.


1. Map을 사용하여 JSON 응답 생성하기

@RestController
@RequestMapping("/api/books")
public class BookController {
    
    @Autowired
    private BookService bookService;

    @GetMapping("/{id}")
    public Map<String, Object> getBookById(@PathVariable("id") Long id) {
        Book book = bookService.getBookById(id);
        Map<String, Object> response = new HashMap<>();
        response.put("title", book.getTitle());
        response.put("author", book.getAuthor());
        response.put("publishedYear", book.getPublishedYear());
        return response;
    }
}


위의 예제에서는 Map 객체를 사용하여 JSON 응답을 생성합니다. 클라이언트에서 `/api/books/1`와 같은 GET 요청을 보내면, 해당 Book 객체를 Map으로 변환하여 JSON 형식으로 응답합니다.

2. List를 사용하여 JSON 응답 생성하기

@RestController
@RequestMapping("/api/books")
public class BookController {
    
    @Autowired
    private BookService bookService;

    @GetMapping("/all")
    public List<Book> getAllBooks() {
        return bookService.getAllBooks();
    }
}


위의 예제에서는 List 객체를 사용하여 JSON 응답을 생성합니다. 클라이언트에서 `/api/books/all`와 같은 GET 요청을 보내면, 모든 Book 객체를 List에 담아 JSON 형식으로 응답합니다.


3. DTO(Data Transfer Object)를 사용하여 JSON 응답 생성하기

@RestController
@RequestMapping("/api/books")
public class BookController {
    
    @Autowired
    private BookService bookService;

    @GetMapping("/{id}")
    public BookDto getBookById(@PathVariable("id") Long id) {
        Book book = bookService.getBookById(id);
        BookDto bookDto = new BookDto();
        bookDto.setTitle(book.getTitle());
        bookDto.setAuthor(book.getAuthor());
        bookDto.setPublishedYear(book.getPublishedYear());
        return bookDto;
    }
}


위의 예제에서는 DTO 객체를 사용하여 JSON 응답을 생성합니다. BookDto는 Book 엔티티 클래스와 유사하지만, 클라이언트에 필요한 필드만을 가지고 있습니다. 클라이언트에서 `/api/books/1`와 같은 GET 요청을 보내면, 해당 Book 객체를 BookDto로 변환하여 JSON 형식으로 응답합니다.

반응형