2016年6月10日金曜日

FuelPHPでLambdaのAPI Gatewayに対してpostを送信する際に、paramでエラーが出てくる的なお話

  • このエントリーをはてなブックマークに追加

とりあえずなんていうかLambdaを使用してAPIを作っちゃおうっていうことをしてみたんだけど、
「Could not parse request body into json: Unrecognized token うんちゃら」っていうエラーが出てきてうまくpostができない状況となってしまった。

原因を調べたらLambda側でそういう趣旨のレスポンスをしているということだった。
とりあえず対策としてはそもそもpostする際のパラメータを普段とは違う形で投げる必要があった的な。
ってことで今日はそのお話をば。

$curl = \Request::forge('API URL','curl');
$curl->set_method('post');
$curl->set_params(json_encode(array("foo" => 'bar')));
$curl->set_header('Content-Type','application/x-www-form-urlencoded');
$curl->set_header('x-api-key','xxxxxx');

ってな感じで投げる前にjson_encodeをする必要がある、多分。
fuelphpのcoreでjson_encodeしてるはずなんだけど、それが悪さしてるかなんなのかよくわからないけど、
とりあえずこうやって投げてあげることで無事に対応することができたみたいな。

自分のやり方があってるかわからないけどこんな感じでいいんじゃないか的なお話。

1 件のコメント:

  1. set_paramsで"application/json"を指定しない限り、formの内容をJSONエンコードしてくれないのでは?
    http://fuelphp.jp/docs/1.8/classes/request/curl.html#/method_set_params

    返信削除

Adsense