본문 바로가기
Development/JAVA & Spring

[Spring] Spring boot를 사용한 REST API

by 최호희 2023. 11. 5.

들어가며,

 

 

@RequestMapping을 사용하여 모든 HTTP 메소드를 처리하던 이전 방식과는 다르게, 최신 방식은 @GetMapping, @PostMapping, @PutMapping, @DeleteMapping, @PatchMapping 등을 사용한다.

URI 엔드포인트는 동일하게 사용하되, 어노테이션만 다르게 설정하여 REST API를 처리한다.

또한 메소드 이름 또한 readPerson, deletePerson 과 같이 명확하게 사용하면 REST 스타일에 가깝게 코딩할 수 있다.

 


@RestController // Rest API를 처리하는 Controller 임을 의미
@RequiredArgsConstructor
@RequestMapping("/api")
public class PersonController {

    private final PersonService personService;
    // POST
    @PostMapping(value = "/person", produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE) 
    public Person createPerson(@RequestBody Person person){
        Person createdPerson = personService.createPerson(person);
        return createdPerson;
    }
    // GET  
    @GetMapping("/person/{name}")
    public Person readPerson(@PathVariable("name") String name) {
    	Person readOnePerson = personService.readOnePerson(name);
    	return readOnePerson;
    }
    //  전체를 받아올 때 -> URI에 s 붙여 사용
    @GetMapping("/persons")	
    public List<Person> readPersons() {
    	List<Person> readAllPerson = personService.readAllPerson();
    	return readAllPerson;
    }
    // DELETE
    @DeleteMapping("/person/{id}")
    public String deletePerson(@PathVariable("id") int id) {
    	int row = personService.deletePerson(id);
   	
    	return row + "개의 로우가 삭제되었습니다.";
    }
    // PATCH (Partial Modify)
    @PatchMapping("/person")
    public Person patchPerson(@RequestParam("column") String column, @RequestParam("tobe") String tobe, @RequestParam("id") int id) {
    	Person modifiedPerson = personService.patchPersonCompany(column,tobe , id);
   	
    	return modifiedPerson;
    }
    // PUT (create and replace)
    @PutMapping("/person")
    public Person putPerson(@RequestBody Person person) {
    	Person putPerson = personService.putPerson(person);
 	   	
    	return putPerson;
    }
}

 


공부하고 있는 단계이기에 내용이 100% 정확하지 않을 수 있습니다.

🍀틀린 부분이나 피드백 환영입니다🍀