タイトルが示すように、Angularの$ httpオブジェクトを使用してAJAX呼び出しを作成しようとしています。リクエストの本文にJSONを送信する投稿リクエストを送信したいと思いますが、URLにクエリ文字列が追加されています。 $ httpのドキュメントを最後まで読んでから、SOの答えをサーフィンして、いくつかの異なる設定を試してみてください。パラメータを正しく渡す方法はまだ分かりません。現在、私のAPIは空のJSONまたはBad Request(400)のいずれかで応答します。
コード
function inviteStaff (json) {
authToken = service.getAuthToken();
return $http({
method: 'POST',
url: baseUrl + '/invitations' + '?authToken=' + authToken,
data: JSON.stringify(json),
headers: {
'Content-type': 'application/json'
}
});
}
消費関数
self.invite = function ($form) {
self.showLoader = true;
InvitesService.inviteStaff($scope.inviteModel).then(function() {
$form.$setPristine();
$scope.inviteModel.timestamp = new Date();
$scope.invites.unshift($scope.inviteModel);
$scope.inviteModel = self.createNewInvite();
self.showLoader = false;
},
function() {
self.showLoader = false;
});
};
要求ログ
data: "authToken=********&t=*****" // this is weird because it adds another "t" parameter to this query string here
headers: Object
Accept: "application/json"
Accept-Language: "en"
Content-type: "application/json"
authToken: "*********" // just the token here
__proto__: Object
method: "POST"
params: Object
timeout: Object
transformRequest: Array[1]
transformResponse: Array[1]
url: "http://****.****.com:****/doctors/invitations?authToken=*****"
__proto__: Object
ParamのJSONオブジェクト
{
accountType: "LEAD_DOCTOR",
firstName: "kraken",
lastName: "lastName",
email: "[email protected]"
}
誰もこれがどのように動作するかを上の小さな光を当てることができますか? jsonオブジェクトをデータまたはパラメータに渡しますか?データフィールドでJSON.stringifyを使用する必要がありますか?場合によっては、人々が空の文字列をデータに渡していることも確認しました。
私はチャールズプロキシ経由でも実行しています。私が望むものに非常に近づくことができますが、なんらかの理由でJSONテキストフィルタをJSONフィルタではなくクエリ文字列として表示しています。
いずれかのアイデアが役に立ちます。私は$ resourceツールを使用するためにリファクタリングとアップグレードを行いますが、私たちは締め切り期限が迫っており、今のところこれを稼働させたいだけです。あなたがより多くの情報を必要とするかどうかを教えてください。
UPDATE 私たちはAPIを文書化するためにswaggerを使用しています。実際にはUIのエンドポイントにヒットすることができます。次のCURLコマンドが生成されます。私はそれが問題を見つけるのを助けるかもしれないと思った。
curl -X POST --header "Content-Type: application/json" --header "Accept: application/json" -d "{
\"firstName\": \"string\",
\"lastName\": \"string\",
\"email\": \"[email protected]\",
\"accountType\": \"CLIENT\"
}" "http://*****.****.com:****/doctors/invitations?authToken=***obfuscatedAuthToken***"
ここでは何が問題ですか? –
2番目の質問:javascriptオブジェクト全体を渡すことができます。Angularはそれを処理します – dex
@MB私は質問 – Kraken