LoginSignup
1
5

More than 5 years have passed since last update.

WildFly Swarmを使用してREST APIを作ってみる。

Posted at

今回やりたいこと

簡単にRESTを作成したい。

何故、WildFly Swarmか

作成したAPIをサッと渡して相手の環境で動かすものにしかったので、Javaが入っていれば動くWildFly Swarmにした。

環境・バージョン

WildFly-Swarm :2017.4.0
開発環境 : Eclipse Version Neon.3 Release (4.6.3)
Java : version "1.8.0_131"

実施手順

pom.xmlの作成

参考URLにあるサンプルコードをもとに作成しています。JAX-RSが一番簡単そうだったので使いました。

pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>GID</groupId>
  <artifactId>AID</artifactId>
  <name>NAME</name>
  <version>1.0.0-SNAPSHOT</version>
  <packaging>war</packaging>

  <properties>
    <version.wildfly.swarm>2017.4.0</version.wildfly.swarm>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
    <failOnMissingWebXml>false</failOnMissingWebXml>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>org.wildfly.swarm</groupId>
        <artifactId>bom-all</artifactId>
        <version>${version.wildfly.swarm}</version>
        <scope>import</scope>
        <type>pom</type>
      </dependency>
    </dependencies>
  </dependencyManagement>

  <build>
    <finalName>FNAME</finalName>
    <plugins>
      <plugin>
        <groupId>org.wildfly.swarm</groupId>
        <artifactId>wildfly-swarm-plugin</artifactId>
        <version>${version.wildfly.swarm}</version>

        <executions>
          <execution>
            <goals>
              <goal>package</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

  <dependencies>
    <!-- Java EE 7 dependency -->
    <dependency>
      <groupId>javax</groupId>
      <artifactId>javaee-api</artifactId>
      <version>7.0</version>
      <scope>provided</scope>
    </dependency>
    <!-- WildFly Swarm Fractions -->
    <dependency>
      <groupId>org.wildfly.swarm</groupId>
      <artifactId>swagger</artifactId>
    </dependency>
    <dependency>
      <groupId>org.wildfly.swarm</groupId>
      <artifactId>jaxrs</artifactId>
    </dependency>
  </dependencies>
</project>

Applicationを実装する。

アプリケーションのルートパスを決めるだけ。

MyApplication.java

import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;

@ApplicationPath("/myapp")
public class MyApplication extends Application{
    public MyApplication() {
    }
}

APIを実装する。

JAX-RXを使った実装と、Swaggerを使いAPIを公開する用のドキュメントをアノテーションで記述する。

MyApi.java

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;

@Path("/apipath")
@Api(value = "/", tags = "tag")
public class MyApi {

    @GET
    @Produces("text/plain")
    @ApiOperation(value = "Sample",
            notes = "This is sample.",
            response = String.class
    )
    public String get() {
        return "This is test.";
    }

}

実行

mvn package

でJarの作成、JARを実行するとAPIが動作する状態になる。
ブラウザを起動し、http://localhost:8080/myapp/apipath にアクセスし「This is test.」と出力されていればOK。

http://localhost:8080/myapp/swagger を開くとAPIの説明が見れる。

参考URL

JAX-RS .war With Swagger Enabled Example

あれこれ

できあがったJarは50Mくらい。
あっという間にREST APIが作れるのはとても便利だと思う。今回はサンプルコードをそのまま実行しているので、もう少し自分の中に腹落ちさせてから使用していきたい。

1
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
5