728x90
반응형
1. pom.xml 파일에 seagger 관련 라이브러리 추가
<!-- swagger -->
<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>
2. egov-com-servlet.xml 파일에 객체생성및 파일위치 추가
<!--
<bean id="swaggerConfig" class="springfox.documentation.swagger2.configuration.Swagger2DocumentationConfiguration"/>
-->
<bean id="swaggerConfig" class="egovframework.com.cmm.config.SwaggerConfig"/>
<mvc:resources location="classpath:/META-INF/resources/" mapping="swagger-ui.html"/>
<mvc:resources location="classpath:/META-INF/resources/webjars/" mapping="/webjars/**"/>
<!-- annotation-driven 설정. -->
<mvc:annotation-driven />
<!-- efault servlet 은 .html .css .js -->
<mvc:default-servlet-handler />
전자정부에서는 자바 config파일에서 그냥 bean 객체를 생성하면 오류가 발생하여서 xml파일에서 객체를 생성하여 준다.
3. SwaggerConfig.java 파일 생성
package egovframework.com.cmm.config;
import org.springframework.context.annotation.Bean;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.builders.ResponseMessageBuilder;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.service.ResponseMessage;
import springfox.documentation.service.VendorExtension;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
import java.util.ArrayList;
@EnableSwagger2
@EnableWebMvc
public class SwaggerConfig {
@Bean
public Docket customImplementation() {
return new Docket(DocumentationType.SWAGGER_2)
.host("192.168.2.13:9000") //서비스하는 url주소가 다른경우 주소 설정
.groupName("그룹명")
.useDefaultResponseMessages(false) // 기존적인 응답메시지 미사용
.globalResponseMessage(RequestMethod.POST, getArrayList()) // 정의한 응답메시지 사용
.apiInfo(getApiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("egovframework.frmprd.ifh.api"))
.paths(PathSelectors.any())
.build();
}
// 선택항목(Swagger UI에서 보여지는 정보)
public ApiInfo getApiInfo() {
return new ApiInfo("Rest Api 연계서비스",
"REST Api Service ",
"1.0",
"https://www.test.go.kr",
new Contact("테스트시스템","https://www.test.go.kr","test@test.email"),
"Apache License Version 2.0",
"https://www.test.go.kr",
new ArrayList<VendorExtension>());
}
private ArrayList<ResponseMessage> getArrayList() {
ArrayList<ResponseMessage> lists = new ArrayList<ResponseMessage>();
lists.add(new ResponseMessageBuilder().code(500).message("500 ERROR").build());
lists.add(new ResponseMessageBuilder().code(403).message("403 ERROR").build());
lists.add(new ResponseMessageBuilder().code(401).message("401 ERROR").build());
return lists;
}
}
4. 시큐리티 사용시 예외 처리
<security:http pattern="/v2/api-docs" security="none"/>
<security:http pattern="/swagger-resources/**" security="none"/>
<security:http pattern="/webjars/**" security="none"/>
<security:http pattern="/swagger-ui.html" security="none"/>
5. RestController.java
package egovframework.frmprd.ifh.api.web;
import egovframework.rte.psl.dataaccess.util.EgovMap;
import io.swagger.annotations.*;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import java.util.Enumeration;
import java.util.HashMap;
/**
* <pre>
* @title
* @desc RestApi
* - DistbHistDclrApiController
* @egovframework.frmprd.ifh.api.web
* <pre>
* @author CBW
* @since 2022.01.12.
* @version 1.0
* @see
* =================== 변경 내역 ==================
* 날짜 변경자 내용
* ------------------------------------------------
* 2022.01.12. CBW 최초작성
*
*/
@Api(value = "test")
@Slf4j
@RestController
@RequestMapping("/restApi/v1")
public class DistbHistDclrApiController {
@ApiModelProperty(value = "유저 이름", dataType = "string")
private String name;
@ApiOperation(value = "카드목록 조회",tags = "테스트", httpMethod = "GET", notes = "전체 카드목록을 조회한다.")
@ApiImplicitParams( value = {
@ApiImplicitParam(name = "age", value = "유저 나이", required = true, dataType = "integer", paramType = "form"),
@ApiImplicitParam(name = "name", value = "유저 이름", required = true, dataType = "string", paramType = "form"),
@ApiImplicitParam(name = "userNo", value = "유저 번호", required = true, dataType = "long", paramType = "form")})
@GetMapping("/test/{cardNo}")
public ModelAndView getTest(@PathVariable("cardNo") String cardNo, HttpServletRequest request) throws Exception {
log.debug("get방식 호출");
Enumeration<String> eHeader = request.getHeaderNames();
HashMap<String, Object> headerMap = new HashMap<String, Object>();
while(eHeader.hasMoreElements()) {
String headerName = eHeader.nextElement();
headerMap.put(headerName, request.getHeader(headerName));
}
log.debug("cardNo" + cardNo);
HashMap<String, Object> tempMap = new HashMap<String, Object>();
log.debug("headerMap.get(\"content-type\")" + headerMap.get("content-type"));
if("application/json".equals(headerMap.get("content-type"))){
//JSONObject jsonObject = JsonUtil.getStringToJsonObecjt(request);
}
StringBuffer requestURL = request.getRequestURL();
String servletPath = request.getServletPath();
ModelAndView mav = new ModelAndView("jsonView");
EgovMap resultMap = new EgovMap();
try {
// 목록 조회
// mav.addObject("dataList" , defaultService.select(tempMap));
// DB SQL 실행 테스트
resultMap.put("result" , "SUCCESS");
resultMap.put("message" , "정상적으로 조회되었습니다.");
} catch(Exception ex) {
resultMap.put("result" , "ERROR");
resultMap.put("message" , "조회중 오류가 발생하였습니다");
ex.printStackTrace();
} finally {
mav.addObject("result" , resultMap);
}
return mav;
}
@PostMapping("/test/{cardNo}")
public ModelAndView postTest(@PathVariable("cardNo") String cardNo, HttpServletRequest request) throws Exception {
log.debug("post방식 호출" + cardNo);
ModelAndView mav = new ModelAndView("jsonView");
EgovMap resultMap = new EgovMap();
resultMap.put("result" , "SUCCESS");
resultMap.put("message" , "정상적으로 조회되었습니다.");
mav.addObject("result" , resultMap);
return mav;
}
@PutMapping("/test/{cardNo}")
public ModelAndView putTest(@PathVariable("cardNo") String cardNo, HttpServletRequest request) throws Exception {
log.debug("put방식 호출" + cardNo);
ModelAndView mav = new ModelAndView("jsonView");
EgovMap resultMap = new EgovMap();
resultMap.put("result" , "SUCCESS");
resultMap.put("message" , "정상적으로 조회되었습니다.");
mav.addObject("result" , resultMap);
return mav;
}
@DeleteMapping("/test/{cardNo}")
public ModelAndView deleteTest(@PathVariable("cardNo") String cardNo, HttpServletRequest request) throws Exception {
log.debug("delete방식 호출" + cardNo);
ModelAndView mav = new ModelAndView("jsonView");
EgovMap resultMap = new EgovMap();
resultMap.put("result" , "SUCCESS");
resultMap.put("message" , "정상적으로 조회되었습니다.");
mav.addObject("result" , resultMap);
return mav;
}
}
728x90
반응형
'프로그램 > 스프링' 카테고리의 다른 글
스프링부트 메이븐 컴파일 (0) | 2023.05.10 |
---|---|
스프링 대용량 멀티 배치_스케줄 (0) | 2022.08.16 |
전자정부 스케줄링 crontab 설정 티베로에서 postgresql 연계 (0) | 2021.08.18 |
[PWA] 자바로 pwa push 알림 기능 개발하기(12) (0) | 2021.08.03 |
[PWA] 자바로 pwa push 알림 기능 개발하기(11) (0) | 2021.08.03 |
댓글