我正在使用 gatling 对全新的 API 进行负载性能测试。这看起来相当简单且有据可查,但我面临的问题很简单,就像在标题上将 Content-Type 设置为“application/vnd.api+json”的请求一样简单。在执行 GET 操作时一切正常,但是在启动 POST 测试时,我得到一个

HTTP response:
status=
415 Unsupported Media Type
headers=
cache-control: [no-cache]
Content-Type: [application/vnd.api+json; charset=utf-8]
Date: [Fri, 08 Sep 2017 12:57:10 GMT]
Server: [nginx]
Vary: [Origin]
x-content-type-options: [nosniff]
x-frame-options: [SAMEORIGIN]
X-Request-Id: [ff993645-8e01-4689-82a8-2f0920e4f2a9]
x-runtime: [0.040662]
x-xss-protection: [1; mode=block]
Content-Length: [218]
Connection: [keep-alive]

body=
{"errors":[{"title":"Unsupported media type","detail":"All requests that create or update must use the 'application/vnd.api+json' Content-Type. This request specified 'application/json'.","code":"415","status":"415"}]}

这是我用于 http 请求的 Scala 代码:
object PostTokenGcm {
 val token = exec {
  http("TestAPI POST /tokens")
    .post("/tokens")
    .headers(Map("Authorization" -> testApiToken,
       "Content-Type" -> "application/vnd.api+json",
        "Accept" -> "application/vnd.api+json" ))
    .body(StringBody(gcmTokenRequestBody)).asJSON
    .check(status.is(201))
    .check(bodyString.exists)
}}

好像没有设置Content-Type?

感谢您的任何领导!

最佳答案

在您的 POST 定义中,您使用的是 asJSON 。根据 documentation about request headers 中的注释:



...因此,标题设置为:

.headers(Map("Authorization"-> testApiToken,
"Content-Type"-> "application/vnd.api+json",
“接受”->“应用程序/vnd.api+json”))

... 被 asJSON 覆盖为 "application/json" (这是 HttpHeaderValues.ApplicationJson 的值)。

关于scala - 使用 Gatling 和 Content-Type 进行负载性能测试,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46118560/

10-16 21:38