2017-09-08 1 views
5

新しいAPIのロードパフォーマンステストにはギャトリリングを使用しています。かなり簡単に文書化されているようですが、私はPOSTのような単純な問題に、Content-Typeをヘッダに 'application/vnd.api + json'に設定してリクエストしています。 GETのものをやったときにすべてがうまく動作しますが、私はここでGatlingとContent-Typeを使用したパフォーマンステストのロード

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"}]} 

を取得するPOSTテストを起動するときは、私は、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を設定しますか?

ありがとうございました!

+1

APIでエラーが発生する可能性はありますか?もしあなたがpostmanのようなツールで同じリクエストをしたら、APIはそれを受け入れますか? – pedromss

+0

私はPostman @pedromssを使いました。希望の201を作成しました。コンテンツタイプをapplication/vnd.api + jsonに設定しても問題ありません。 – Sofia

答えて

6

POST定義では、asJSONを使用しています。 documentation about request headersにノートによると:

のhttp( "foo" という)( "バー")を取得asJSONは同等です:。。

http("foo").get("bar") 
    .header(HttpHeaderNames.ContentType, HttpHeaderValues.ApplicationJson) 
    .header(HttpHeaderNames.Accept, HttpHeaderValues.ApplicationJson)

...そう、に設定されたヘッダ:

.headers(Map("Authorization" -> testApiToken, 
     "Content-Type" -> "application/vnd.api+json", 
     "Accept" -> "application/vnd.api+json"))

は...(HttpHeaderValues.ApplicationJsonの値である)"application/json"からasJSONによって上書きされます。

関連する問題