コードをいじっていたらREST APIでkintoneレコード登録がうまくいかなくなり、検証のためにVSCodeの「REST API」機能拡張以下のようなリクエストを投げた。
POST https://{{subdomain}}.cybozu.com/k/v1/records.json HTTP/1.1 Host: {{subdomain}}.cybozu.com:443 X-Cybozu-Authorization:{{base64encoded}} Content-Type: application/json {"app":6,"records":[ [ { "salesid":{"value":187}, "salesdate":{"value":"2020-12-31"}, "totalamount":{"value":null}, "tax_included":{"value":0}, "torihikisaki":{"value":"S"}, "segment":{"value":"AA003"}, "tbl_products":{ "value":[ {"value":{"productid":{"value":"L1001"}, "productname":{"value":"K04"}, "qty":{"value":1}, "amount":{"value":0}, "tax":{"value":0}}} ] } } ], [ { "salesid":{"value":189}, "salesdate":{"value":"2020-12-31"}, "totalamount":{"value":null}, "tax_included":{"value":0}, "torihikisaki":{"value":"日本"}, "segment":{"value":"AA003"}, "tbl_products":{ "value":[ { "value":{ "productid":{"value":"L1001"}, "productname":{"value":"K04"}, "qty":{"value":1}, "amount":{"value":0}, "tax":{"value":0} } } ] } } ] ] }
戻ってくるレスポンスはステータスコードが200なのに、戻り値が空になっており、レコードの登録もされていない。
HTTP/1.1 200 OK Server: nginx Date: Mon, 18 Jan 2021 02:27:35 GMT Content-Type: application/json;charset=utf-8 Transfer-Encoding: chunked Connection: close Vary: Accept-Encoding X-Frame-Options: SAMEORIGIN Cache-Control: no-cache, no-store, must-revalidate X-ConcurrencyLimit-Limit: 100 X-ConcurrencyLimit-Running: 1 Set-Cookie: JSESSIONID=RsM3r5Exd9vwAqwTQPLEM8Fti6rzlRnI1XXNWrTYTSliUwzWqalUdd7pZuJCzN0v; Path=/; Secure; HttpOnly; SameSite=Lax Expires: Thu, 01 Jan 1970 00:00:00 GMT Strict-Transport-Security: max-age=315360000; includeSubDomains; preload; X-UA-Compatible: IE=Edge X-Content-Type-Options: nosniff X-XSS-Protection: 1; mode=block Content-Encoding: gzip { "ids": [], "revisions": [] }
疎通には成功しているのに登録されない、こんな現象に初めて遭遇したので困惑したのだが、cybozu developer networkで探したら似た事例があった。
よく見るとrecordの項目が配列になっている。
自分の方もよく見ると、recordsの項目が、二重の配列になっていた。
これでエラー帰って来ないのはちょっと納得いかないが、まあ原因がわかったので良しとしよう……。