| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
- GitHub_Actions
- Java
- form
- 카카오사용자정보가져오기
- Spring API
- input
- 카카오인가코드받기
- 엔티티 매니저
- MIND 2023 #후기
- jenkins
- feignClient
- button
- Interface
- 상속
- spring
- html
- Docker
- 백엔드스쿨
- 인스턴스
- 엔티티 생명주기
- 백엔드공부
- 어떤 개발자?
- 카카오인증토큰받기
- static
- ci/cd
- oAuth2
- 제로베이스
- 예외
- tag
- 백엔드 로드맵
- Today
- Total
HiDevelop
API 작성 본문
HTTP 메소드를 통해 클라이언트로 부터 요청을 받아오는 API를 작성하는 방법입니다.
1. Get API @GETMAPPING
Get Api는 웹 어플리케이션 서버에서 값을 가져올 때 사용하는 API 입니다. Get API를 구현하는 방법은 여러 가지방식이 있습니다. 코드를 보면 알아보겠습니다.
@PathVariable - 1
//http://localhost:8080/api/read/{str}
@GetMapping("/read/{str}")
public String read1(@PathVariable String str){
return str;
}
매개변수를 받을 때 자주 쓰이는 방법으로 URL 자체에 값을 담아 요청하는 방식입니다.
메소드의 파라미터에 @PathVariable 어노테이션을 통해 파라미터를 지정해주시면 됩니다.
http://localhost:8080/api/read/{str}에서 str에 요청 값을 받아오며, 실질적으로 클라이언트에서 요청을 보내면http://localhost:8080/api/read/text가 됩니다.
주의할 점은
1. @GetMapping 어노테이션 값으로 URL을 입력할 때 중괄호를 사용해 어느 위치에서 값을 받을지 지정해야합니다.
- http://localhost:8080/api/read/{str} 이런형식이면, /api/read/ A 부분(A부분에) 값을 지정받겠다는 것입니다.
2. 메서드의 파라미터와 그 값을 연결하기위해 @PathVariable을 명시하며, @GetMapping 어노테이션 @PathVariable에 지정된 변수의 이름을 동일하게 맞춰야 합니다.
- @GetMapping("/read/{요청값A}") 의 A와 @PathVariable String B의 B가 서로 이름이 일치해야합니다. 위 코드는 str로 일치하고 있습니다.
하지만 일치시켜도 되지 않는 방법이 있습니다.
@PathVariable - 2
//http://localhost:8080/api/read/{variable}
@GetMapping("/read/{variable}")
public String read2(@PathVariable("variable") String str){
return str;
}
이 처럼, @PathVariable("variable")로 받겠다고 명시를 하면, @PathVariable 의 파라미터 명과 @GetMapping 어노테이션 지정돈 변수의 이름이 동일하지 않아도 됩니다.
@RequestParam
@GetMapping("/read")
public String read3(@RequestParam String id, String pw){
return "id" + id + "pw" + pw;
}
@PathVariable대신 @RequestParam 어노테이션을 사용해 GetAPI를 작성할 수 있습니다. 단 @RequestParam을 사용할 때는 요청 URL이 다음과 같습니다. /read?id=id2341&pw=1234
지금은 저희가 id, pw와 같이 어떤 요청이 들어올지 알지만 모르는 경우에는 Map을 사용해 받을 수 있습니다.
@GetMapping("/read")
public String read4(@RequestParam Map<String, String> request){
StringBuilder sb = new StringBuilder();
request.entrySet().forEach(map ->{
sb.append(map.getKey()+":" + map.getValue()+"\n");
});
return sb.toString();
}
이런방식으로 하면, id가 key값 id2341이 value값이 되어 전달되어집니다.
2. POST API -@PostMapping
Post API는 웹 어플리케이션을 통해 데이터베이스 등의 저장소에 리소스를 저장할 때 사용되는 API입니다. GET API처럼 URL에 변수를 넣어 요청을 보내지 안혹, HTTP 바디(body)에 담아 서버에 전달합니다.
@PostMapping("/member")
public String postMember(@RequestBody Map<String, Object> postData){
StringBuilder sb = new StringBuilder();
postData.entrySet().forEach(map ->{
sb.append(map.getKey()+":" + map.getValue()+"\n");
});
return sb.toString();
}
@RequestBody는 HTTP의 Body 내용을 해당 어노테이션이 지정된 객체에 매핑하는 역할을 합니다.
3. POST API -@PostMapping
PUT API는 웹 어플리케이션 서버를 통해 데이터베이스 같은 저장소에 존재하는 리소스 값을 업데이트 하는데 사용합니다.
POST API와 비교하면 요청을 받아 실제 데이터베이스에 반영하는 과정에서 차이가 있지만, 컨트롤러 클래스를 구현하는 방법은 POST API와 거의 동일합니다. 리소스를 서버에 전달하기 위해 HTTP Body를 활용하기 때문입니다.
@PutMapping("/member")
public String putMember(@RequestBody Map<String, Object> postData){
StringBuilder sb = new StringBuilder();
postData.entrySet().forEach(map ->{
sb.append(map.getKey()+":" + map.getValue()+"\n");
});
return sb.toString();
}
3. DELETE API -@PostMapping
delete Api는 웹 어플리케이션 서버를 거쳐 데이터베이스 등의 저장소에 있는 리소스를 삭제할 때, 사용합니다. 서버에서는 클라이언트로부터 리소스를 식별할 수 있는 값을 받아 데이터베이스나 캐시에 있는 리소스를 조회하고 삭제하는 역할을 수행합니다.
//http://localhost:8080/request?email=example@eamil.com
@DeleteMapping("/request")
public String deleteRequestParam(@RequestParam String email){
return "e-mail : " + email;
}'Spring' 카테고리의 다른 글
| 간단한 서버 간 통신 @FeignClient (0) | 2023.08.03 |
|---|---|
| OAuth2 (이론 및 준비) (0) | 2023.07.20 |
| ORM(Object Relational Mapping) (0) | 2023.04.09 |
| Maven pom.xml? (0) | 2023.03.19 |
| Spring Boot!란? (0) | 2023.03.12 |