スプリングブートを使用してアプリケーションを開発しています。 In REST controller私はパス変数を使用することを好みます(@PathVariabale
アノテーション)。私のコードはパス変数を取得していますが、それは{} URLにあるように中括弧に続きます。この問題を解決するために私に提案してください
@RequestMapping(value = "/user/item/{loginName}", method = RequestMethod.GET)
public void getSourceDetails(@PathVariable String loginName) {
try {
System.out.println(loginName);
// it print like this {john}
} catch (Exception e) {
LOG.error(e);
}
}
URL
http://localhost:8080/user/item/{john}
コントローラーに出力
{ジョン}
つかいます http://localhost:8080/user/item/john
代わりにリクエストを送信します。
Springにパス変数loginName
に「{john}」の値を与えるため、Springは「{}」で取得します
URIテンプレートパターン
URIテンプレートを使用すると、@ RequestMappingメソッドでURLの選択した部分に簡単にアクセスできます。
URIテンプレートは、URIに似た文字列であり、1つ以上の変数名を含んでいます。 これらの変数に値を代入すると、テンプレートはURIになります。 URIテンプレート用に提案されているRFCは、URIのパラメーター化方法を定義しています。たとえば、URIテンプレート http://www.example.com/users/ {userId}には変数userIdが含まれます。 変数に値fredを割り当てると、 http://www.example.com/users/fred 。
Spring MVCでは、メソッド引数で@PathVariableアノテーションを使用して、URIテンプレート変数の値にバインドできます。
@RequestMapping(value="/owners/{ownerId}", method=RequestMethod.GET)
public String findOwner(@PathVariable String ownerId, Model model) {
Owner owner = ownerService.findOwner(ownerId);
model.addAttribute("owner", owner);
return "displayOwner";
}
URIテンプレート「/ owners/{ownerId}」は、変数名ownerIdを指定します。コントローラーがこの要求を処理すると、ownerIdの値は、URIの適切な部分にある値に設定されます。たとえば、要求が/ owners/fredに着信すると、ownerIdの値はfredになります。