私はSpringブートRESTアプリケーション(1.5.6.RELEASE)を持っています。 gzip圧縮を着信と発信したいと思います。このドキュメントhttps://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.htmlあたりとして、私はSpringブートRESTアプリケーションでのgzipped要求の処理
server.compression.enabled=true
server.compression.mime-types=...
を設定している。しかし、これは私だけのサービスからgzipping応答には適用されているようだ(これはドキュメントが実際に言っていることである「応答圧縮が有効になっている場合は#。」)。
私の問題は、着信gzipped要求が圧縮解除されていないため、JSON構文解析エラーが発生することです。
誰かが私のSpring Bootアプリケーションでリクエストの解凍をどのように有効にすることができるか知っていますか?
EDIT例:
POMスニペット:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.6.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
コントローラコード:
@RestController
public class Controller {
@RequestMapping(value = "/", method = RequestMethod.POST, consumes = "application/json")
public String post(@RequestBody Map<String, String> request) {
return request.get("key");
}
}
カールを使用した試験:
$ echo '{ "key":"hello" }' > body
$ curl -X POST -H "Content-Type: application/json" --data-binary @body http://localhost:8080 # prints 'hello'
$ echo '{ "key":"hello" }' | gzip > body.gz
$ curl -X POST -H "Content-Type: application/json" -H "Content-Encoding: gzip" --data-binary @body.gz http://localhost:8080 # fails
gzipで圧縮された呼び出しがメッセージで失敗します。
{"timestamp":1505843443456,"status":400,"error":"Bad Request","exception":"org.springframework.http.converter.HttpMessageNotReadableException","message":"JSON parse error: Illegal character ((CTRL-CHAR, code 31)): only regular white space (\\r, \\n, \\t) is allowed between tokens; nested exception is com.fasterxml.jackson.core.JsonParseException: Illegal character ((CTRL-CHAR, code 31)): only regular white space (\\r, \\n, \\t) is allowed between tokens\n at [Source: [email protected]; line: 1, column: 2]","path":"/"}
どのように圧縮要求を発行しますか? – diginoise
https://stackoverflow.com/q/20507007/46673、https://stackoverflow.com/q/16638345/466738、https://serverfault.com/questions/56700/is-it-possible-to- enable-http-compression-for-requests –
@diginoise私はクライアントを制御しません – B255