① method 요소를 RequestMethod.POST로 설정
@RequestMapping(value="/domain",method = RequestMethod.POST)
public String postExample(){
return "Hello Post API";
① POST 요청은 클라이언트가 서버에 리소스를 저장하는 데 사용하므로 클라이언트의 요청 트래픽에 값이 포함돼 있음. (즉 앞서 말했듯 HTTP 바디에 리소스의 값이 저장되어있음)
① HTTP BOdy에 데이터를 담아 전달
@PutMapping(value="/member")
public String postMember(@RequestBody Map<String,Object>pustData){
StringBuilder sb = new StringBuilder();
pustData.entrySet().forEach(map->{
sb.append(map.getKey()+" : "+map.getValue()+"\n");
});
return sb.toString();
}
// return String
@PutMapping(value="/member1")
public String postMemberDto1(@RequestBody MemberDto memberDto){
return memberDto.toString();
}
// return DTO Object
@PutMapping(value="/member2")
public MemberDto postMemberDto2(@RequestBody MemberDto memberDto){
return memberDto;
}
② @ResponseEntity
HttpEntity 클래스를 활용
@ HttpEntity 클래스
HttpEntity
public class HttpEntity<T>{ private final HttpHeaders headers; @Nullable private final T body; ... }
RequestEntity와 ResponseEntity는 HttpEntity를 상속받아 구현한 클래스
ResponseEntity : 서버에 들어온 요청에 대한 응답 데이터를 구성해 전달
@ ResponseEntity 클래스
public class ResponseEntity<T> extends HttpEntity<T>{
private final Object status;
}
① API 문서화
: API 엔드포인트, 요청 및 응답 형식, 매개변수, 헤더 등에 대한 문서 자동화
개발자가 코드 작성 시 주석과 어노테이션을 사용해 설명을 추가하면 Swagger가 자동으로 api문서 생성
② 시각화
: Swagger UI는 API 문서를 시각적으로 보여주는 웹 기반 인터페이스
③ API 테스트
: Swagger UI를 통해 API를 직접 테스트. 매개변수를 설정하고 요청을 보내면 실제 응답을 확인 및 디버깅
④ 코드 생성
: Swagger는 API 정의를 기반으로 클라이언트 및 서버의 코드를 자동으로 생성하도록함(서버와 클라이언트 간 일관된 통신을 구현)
⑤ API 디자인
: Swagger를 사용해 API의 디자인과 구조를 미리 계획. 협업에도 용이
① 의존성 추가
@pom.xml
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
② refresh maven project
③ SwaggerConfiguration.java 작성
package com.example.demo.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@Configuration
@EnableSwagger2
public class SwaggerConfiguration {
}
④ application.properties 수정
spring.mvc.pathmatch.matching-strategy=ant_path_matc her
⑤ 서버 실행 후 "http://localhost:8080/swagger-ui.html" 접속
① @ApiOperation
: 대상 API의 설명을 위한 어노테이션
② @ApiParam
: 매개변수에 대한 설명 및 설정을 위한 어노테이션
// 추가
@ApiOperation(value="GET 메서드 설명",notes="@RequestParam을 활용한 GET Method")
@GetMapping(value = "/request1")
public String getRequestParam1(
// 추가 (" @ApiParam (value="이름",required = true) ")
@ApiParam (value="이름",required = true) @RequestParam String name,
@ApiParam (value="이메일",required = true) @RequestParam String email,
@ApiParam (value="회사",required = true) @RequestParam String organization){
return name+" "+email+" "+organization;
}