Как следует из названия, я пытаюсь написать вызов AJAX с использованием объекта $ http Angular. Я хотел бы отправить запрос на отправку, который отправит 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 в поле данных? В некоторых случаях я также видел, как люди передавали пустую строку в данные.
Я также пропустил его через Charles Proxy. Я могу приблизиться к тому, что хочу, но по какой-то причине JSON отображается под текстовым фильтром JSON как строка запроса, а не фильтр JSON.
Любые идеи были бы полезны. Я буду реорганизовать и обновить все, чтобы использовать инструмент $ resource, но мы находимся в сжатые сроки, и я просто хочу, чтобы это работало пока. Дайте мне знать, если вам нужна дополнительная информация.
ОБНОВЛЕНИЕ Мы используем swagger для документирования нашего API, и вы можете на самом деле поразить конечную точку в своем интерфейсе. Он производит следующую команду 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***"
В чем проблема? –
Второй вопрос: вы можете передать весь объект javascript, Angular обработает его – dex
@MB Я обновлю вопрос – Kraken