본문 바로가기

카테고리 없음

Spring Boot Rest API 만들기

728x90

RestAPI만들때 규칙

RestAPI를 만들 때 URI에 행위가 들어가면 안됩니다.

예를들어 /putItem, /updateItem 이런식으로 put, update등의 행위가 들어가지 않도록 하는게 표준입니다.

그리고 _ 언더바를 쓰지 않습니다. -하이픈은 사용 합니다.

 

도메인 디자인

RestAPI를 만들기 위해서는 먼저 Domain을 만들어야 합니다. 이 도메인이 기준이 되기 때문입니다.

@Getter
@Setter
public class Product {
    private long id;
    private String name;
    private LocalDateTime updated;
}

 

 

API 정의서 작성

사용자 요청 URL 메소드 Path body
전체 목록 조회 /all GET    
등록 /add POST /add json
수정 /update PUT /update/{id} json
삭제 /delete DELETE /delete/{id}  

 

1.PathVariable사용하기

PathVariable은 http://localhost:8080/hello/1 이렇게 주소에 바로 값을 넘긴 것을 받을 때 사용 합니다. /hello/{id} 로 해주면 id라는 이름의 파라메터로 받을 수 있습니다.

@GetMapping(value = "/hello/{id}")
public String hello(@PathVariable("id") String id) {
   return id;
}

 

호출

http://localhost:8080/hello/1

 

위와 같이 호출 하면

:

response가 1이라고 옵니다.

 

 

@RequestBody사용하기

사용자 요청 URL 메소드 Path RequestBody
Echo /api/v1/blog/ POST /api/v1/blog/ json

 

@RestController
@RequestMapping(value = "/api/v1/blog")
public class BlogAnalysticController {
    @PostMapping(value = "/")
    public String echo(@RequestBody Map<String, Object> postData) {
        StringBuilder sb = new StringBuilder();
        postData.entrySet().forEach(map->{
            sb.append(map.getKey() + ":" + map.getValue() + "/n");
        });
        return sb.toString();
    }
}

Body에 넘어온 key, value 값들을 String으로 묶어서 리턴 해주는 Controller입니다.

 

호출

id와 name 두가지 값을 보낸 것을 그대로 string으로 바꾼 값이 리턴 되었습니다.

 

Add와 Update만들기

가장 복잡한게 Add와 Update입니다. 왜냐하면 오브젝트를 받기 때문입니다.

@PostMapping(value = "/add")
public void add(@RequestBody Product product) {

}

@PutMapping(value = "/add")
public void update(@PathVariable long id, @RequestBody Product product) {

}

@RequestBody를 쓰면 Json을 파싱 해줍니다.

 

호출 할 때는 json형태로 파라메터를 넘기면서 호출 해야 합니다.

 

 

 

참고

스프링부트 Restful API 빠르게 시작하기 2편 - CRUD 요청 템플릿 작성 - YouTube

728x90
블로그 주인장입니다. 원하시는 정보는 얻으셨나요? 이 포스트에서 추가로 필요한 정보가 있으시면 여기에 남겨주세요.