본문 바로가기
JAVA

[자바]REST API 2

by NetStats 2024. 5. 7.

설정 관련 Annotation

Annotation 설명 비고
@SpringBootApplication -스프링부트 애플리케이션의 시작점을 나타내는 어노테이션 입니다  
@Controller -Http 요청을 처리하는 컨트롤러 클래스를 정의하는 어노테이션 입니다 Spring MVC 뷰를 반환하는데 사용 됩니다.
@RestController -RESTful 웹 서비스를 위한 컨트롤러를 정의하는 어노테이션 입니다 RESTful 웹 서비스의 JSON,XML
등의 응답을 반환하는데 사용 됩니다.

 

[더 알아보기]

 

- @Controller는 일반적으로 HTTP 요청을 처리하고 '뷰'를 반환하는데 사용이 됩니다.

 

- @RestController는 HTTP요청에 대한 RESTful웹 서비스의 JSON,XML등의 응답을 반환하는데 사용이 됩니다

 


RESTful API의 행위(Verb) Annotation


Annotation HTTP Method의 역할 비고(예시)
@GetMapping GET 클라이언트가 리소스를 조회할때 사용 @GetMapping(
value ="/user")
@PostMapping POST 클라이언트가 리소르를 생성할 때 사용 @PostMapping(
value = "/user)
@PutMapping PUT 클라이언트가 리소스를 갱신할 때 사용 @PutMapping(
value="/user)
@PatchMapping PATCH 클라이언트가 리소스 일부를 갱신할 때 사용 @PatchMapping(
value="/users)
@DeleteMapping DELETE 클라이언트가 리소스를 삭제할 때 사용 @DeleteMapping(
value="users)
@RequestMapping ALL 요청 메서드(GET,POST,PUT,
DELETE등)과 URL매핑을 할께 지정 할 수 있다.
@RequestMapping(
value="/users
method=
RequestMethod.GET)

[더 알아보기]

@RequestMapping과 @00Mapping중 무엇을 사용해야 할까?

 

-간단한 HTTP요청에 대해서는 @00Mapping을 사용하는것이 코드 가독성과 유지보수성을 높일 수 있지만

여러개의 HTTP요청 메서드에 대해 하나의 메서드로 처리해야하는 경우는 @RequestMapping을 사용해야한다.


RESTful API의 표현(Representation) Annotation

표현(Representation) 이란?

-RESTful에서 클라이언트와 서버간의 데이터 통신을 위해 주고받는 데이터 형식의 (JSON,XML,HTML)을 의미합니다

 

1.JSON 데이터 형식의 전송 방식

  • 클라이언트에서 API로 데이터를 전송 방식으로는 'GET방식'과 'POST방식' 을 이용하는 전송 방식이 있습니다.
구분 GET방식 POST방식
전송 데이터 URL끝에 파라미터를 붙여서 서버에 요청을 보내는 방식 HTTP Body에 담아서 서버에 요청을 보내는 방식
전송 데이터 크기 제한 데이터의 양에 제한 있음 데이터의 양에 제한 없음
캐싱 가능 여부 가능 불가능
보안 데이터 노출 가능성 여부 있음 데이터 노출 가능성 낮음
사용 예시 검색어 전송,페이지 요청 로그인,회원가입,게시글 작성

 

[더 알아보기]

캐싱이란?

이전에 요청한 데이터를 저장해 두었다가 다음 요청에 시에 바로 제공하는 것을 말합니다.

이를통해서 네이트워크 대역폭을 절약하고, 서버의 부하를 줄일 수 있습니다.


데이터 형식 주요 어노테이션

 

Annotation 설명 예시
@Pathvariable 'URL 경로의 일부'를 매개변수로 전달받는 어노테이션 @GetMapping("/user/{id}")
public ResponseEntity getUserById(
@Pathvariable Long id){}
@RequestParam 'HTTP 요청 파라미터'를 매개변수로 전달 받는 어노테이션 @GetMapping("/users")
public ResponseEntity<list>
getAllUser(@RequestParam("age")
int age){}
@RequestBody HTTP 요청의 '본문(body)'을 매개변수로 전달 받는 어노테이션 @PostMapping("/user")
public ResponseEntity createUser(
@RequestBody User user){}
@ResponseBody HTTP 응답의 본문(body)을 생성하는 메서드 에 적용하는 어노테이션 @GetMapping("/data")
public @ResponseBody Map<String,object="">getData(){}
@ResponseStatus HTTP응답의 상태 코드를 지정하는 어노테이션 @GetMapping("/users/{id}")
@ResponseStatus(HttpStatus.NOT_FOUND)
public void 
getUserById(@PathVariable Long id){}
반응형

'JAVA' 카테고리의 다른 글

[Spring] Controller와 Service의 역할  (0) 2024.05.08
[자바]RestAPI  (0) 2024.05.07
java람다/스트림  (0) 2024.05.06
DTO 와 VO  (0) 2024.05.04
웹 MVC  (0) 2024.05.04

댓글