はじめに
以下記事で利用したサンプルは特定のURLを叩くと特定のメッセージを返すものでした。
今回はパラメータに数字を入れた場合にその数値を画面に表示させてみます。
環境も同一とし、Libertyに配置する使い方とします。
環境情報
- Windows 10
- DockerDesktop
- Eclipse(STS)
パラメータを受け付けるソースコード
コードは以下です。
package com.example.demo; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping public class Hello { @RequestMapping("/{num}") private String hellonum(@PathVariable int num) { return "HelloWorld Num:"+num; } }
要はhelloと記載していた箇所を{num}としています。
そしてクラスの引数に@PathVariableとしてint型を渡すとしてプログラム内で処理します。
war化及びデプロイ
mavenを利用してパッケージ化します。
[INFO] --- maven-war-plugin:3.2.3:war (default-war) @ demo --- [INFO] Packaging webapp [INFO] Assembling webapp [demo] in [C:\Users\XX\eclipse-workspace\demo\target\demo-0.0.1-SNAPSHOT] [INFO] Processing war project [INFO] Webapp assembled in [510 msecs] [INFO] Building war: C:\Users\XX\eclipse-workspace\demo\target\demo-0.0.1-SNAPSHOT.war ... [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ ...
上記のwarをデプロイします。
> docker run -d -p 80:9080 -v C:\Users\XX\eclipse-workspace\demo\target\demo-0.0.1-SNAPSHOT.war:/config/dropins/app.war websphere-liberty
動作確認
Cygwin上にてcurlコマンドを利用して確認しました。
$ curl http://localhost/app/1 HelloWorld Num:1 $ curl http://localhost/app/2 HelloWorld Num:2 $ curl http://localhost/app/3 HelloWorld Num:3 $ curl http://localhost/app/11111111111 Error 400:
動的に値を返してくれます。ちなみに整数型ということで大きすぎる数はNGのようです。
終わりに
インタラクティブな処理を行う上でリクエストをパラメータ化したいケースはあると思います。
サンプルファイルに少し手を入れるだけで実現できる処理なので、ぜひ試してみてください。
以上、ご参考になれば幸いです。