SpringBoot jersey2-grizzly2-swagger RESTful API example REST api 서버 개발
이번 포스팅에서는 SpringBoot 에서
jersey2, grizzly2, swagger 라이브러리를 활용하여 REST api 를 개발하는 방법을 알아보도록 하겠습니다.
[SPEC]
SpringBoot 2.0.2 RELEASE
jersey-container-grizzly2-servlet 2.26
jersey-hk2 2.26
swagger-jersey2-jaxrs 1.5.0
[gradle]
compile group: 'org.glassfish.jersey.containers', name: 'jersey-container-grizzly2-servlet', version: '2.26'
compile group: 'io.swagger', name: 'swagger-jersey2-jaxrs', version: '1.5.0'
compile group: 'org.glassfish.jersey.inject', name: 'jersey-hk2', version: '2.26'
maven은 해당 name으로 구글링 하시면 쉽게 구하실 수 있습니다.
위의 라이브러리를 의존성 주입하신 후 @SpringBootApplication 메인 메소드를 아래와 같이 작성합니다.
@SpringBootApplication
public class RestApplication {
private static final Logger logger = LoggerFactory.getLogger(RestApplication.class);
public static void main(String[] args) {
ApplicationContext ctx = SpringApplication.run(RestApplication.class, args);
RestServer restServer = ctx.getBean(RestServer.class);
logger.info("Jersey RESTful Server Start");
restServer.start();
}
}
이제 RestServer 클래스를 구현합니다.
@Service
public class RestServer {
private static final Logger logger = Logger.getLogger(RestServer.class.getName());
private static final URI BASE_URI = URI.create("http://localhost:8080/"); // ip, port 설정
public static final String ROOT_PATH = "helloWorld"; //rootPath 설정
public void start() {
do{
try {
Connection();
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}catch(Exception ex){
ex.printStackTrace();
}
}while(true);
}
private void Connection(){
try {
final HttpServer server = GrizzlyHttpServerFactory.createHttpServer(BASE_URI, create(), false);
Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {
@Override
public void run() {
server.shutdownNow();
}
}));
server.start();
logger.info(String.format("Application started.%nTest Url : %s%s%n",BASE_URI, ROOT_PATH));
Thread.currentThread().join();
} catch (IOException | InterruptedException ex) {
Logger.getLogger(RestServer.class.getName()).log(Level.SEVERE, null, ex);
}
}
public static ResourceConfig create() {
String resources = "com.neighbor.ecall.geon.collection.server.resource"; //리소스들이 있는 패키지
BeanConfig beanConfig = new BeanConfig();
beanConfig.setVersion("1.0.0");
beanConfig.setSchemes(new String[]{"http"});
beanConfig.setHost(BASE_URI.toASCIIString());
beanConfig.setBasePath("/");
beanConfig.setResourcePackage(resources);
beanConfig.setScan(true);
final ResourceConfig resourceConfig = new ResourceConfig();
resourceConfig.packages(resources);
resourceConfig.register(io.swagger.jaxrs.listing.ApiListingResource.class);
resourceConfig.register(io.swagger.jaxrs.listing.SwaggerSerializers.class);
return resourceConfig;
}
}
3가지만 수정해 주시면 됩니다.
url 과 port 설정.
루트패스 설정.
create 메소드 쪽 리소스들이 있는 패키지 설정
그럼 간단한 리소스 예제를 보도록 하죠.
@Api(value = "print", description = "Print Hello World")
@Path("/print")
public class HelloWorldResource {
private static final Logger logger = Logger.getLogger(AmCollectionResource.class.getName());
/*return value 가 필요한 경우 구현 필요. 현재 void ==> RESTResponse.class*/
@GET
@Path("/{value}")
@Produces(MediaType.APPLICATION_JSON)
@ApiOperation(value = "HelloWorld")
public String printHelloWorld(@PathParam("value") String value) {
return value;
}
}
value로 입력받은 데이터를 리턴해 주는 간단한 api 입니다.
출력 주소는
http://localhost:8080/print/helloworld
print 다음 path에 입력받은 데이터가 출력되는 예제 입니다.
jersey, grizzly, swagger 를 이용한 간단한 REST api를 작성해 보았습니다.
이제 리소스쪽을 디자인해서 응용하면 REST적인 api를 구현 하실 수 있습니다.
'Programing > Springboot' 카테고리의 다른 글
Spring boot jetty websocket 서버 개발, 웹소켓 서버 구현 (2) | 2018.09.26 |
---|---|
Springboot logback 설정하기, 콘솔 및 파일저장 (1) | 2018.08.17 |
SpringBoot Redis(Jedis) 활용 Publish/Subscribe pub/sub 구현 방법 (0) | 2018.08.13 |
Eclipse SpringBoot 프로젝트 생성, 이클립스 스트링부트 프로젝트 생성, jar 배포하기 (0) | 2018.08.10 |
Springboot 기반 Californium COAP 통신 서버 구현 (0) | 2018.07.13 |
댓글