http://localhost:8080/things/ZhaD2lk27XQPRJtwrABltd+UTWXcbnY%2FTrpxGP7VDVo=
次のようなリクエスト ハンドラーを使用して、Spring Boot アプリケーション RestController をGET を呼び出すと、次のようになります。
@RequestMapping("/things/{thingId}")
public ResponseEntity<Thing> getThing(
@PathVariable String thingId) {
System.out.println("thingId=" + thingId);
...
ZhaD2lk27XQPRJtwrABltd UTWXcbnY/TrpxGP7VDVo=
私が期待していたものではなく、次のように出力されZhaD2lk27XQPRJtwrABltd+UTWXcbnY/TrpxGP7VDVo=
ます。
ご覧のとおり、プラスがスペースに変わります。これは、パス部分では発生せず、クエリ部分のみで発生するはずです。これが、URL を作成するために使用している SpringUriComponentsBuilder.build().encode()
がプラスを に変えない理由です%2B
。
エンコードされたスラッシュ (/) を機能させるには、アプリケーションを微調整する必要がありました。詳細については、URL の ID に %2F が含まれている場合、REST エンドポイントに到達できないを参照してください。
Tomcat 埋め込み 8.5.11 を使用する SpringBoot 1.4.4.RELEASE を使用しています。
Spring RestTemplate、Postman、および Chrome からサービスを呼び出してみました。すべての場合で同じ結果、プラスはスペースに変わります