Spring @RequestMapping handling von Sonderzeichen
Habe ich eine REST-API wie diese:
@RequestMapping(value = "/services/produce/{_id}", method = RequestMethod.PATCH,
consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
public String patchObject(@RequestBody PatchObjectRequest obj,
@PathVariable("_id") String id) {
//some code
}
Mein problem ist, dass die id, die möglicherweise gegeben werden, in der form:
US%2FCA%2FSF%2FPlastic
Die eine URL-Codierung von "US/CA/SF/Kunststoff".
Mein problem ist, dass, wenn ein % - Zeichen in der URL das @RequestMapping nicht anzeigen es diese Methode und es gibt eine 404. Gibt es eine Möglichkeit zu akzeptieren-ids, die % - Zeichen in Ihnen als Teil der URL?
- Können Sie uns zeigen, ein Beispiel, es scheitern? Ich würde gerne sehen, eine Anfrage an eine bestimmte URL mit diesen Zeichen und Feder-Protokolle, die zeigen, dass es nicht das finden einen mapper.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sie erhalten diesen Fehler, weil Sie es als path-variable, Sie decodiert und dann server versucht, es auf einen Pfad, der nicht beendet wird. Ähnliche Fragen gepostet, wo vor ein paar Jahren: Wie ein Frühling @RequestMapping haben ein @pathVariable mit "/"?, urlencoded Schrägstrich brechen URL.
Eine gute option für Sie wäre, zu ändern
_id
aus@PathVariable
zu@RequestParam
und das problem ist gelöst, und entfernen Sie es aus dem Weg.Hoffe, Sie können hinzufügen, regex in der variable path wie: