#angularjs #encoding #urlencode #x-www-form-urlencoded
#angularjs #кодирование #urlencode #x-www-form-urlencoded
Вопрос:
Я пытаюсь закодировать («application / x-www-form-urlencoded») объект в Angular, используя HttpParameterCodec. Этот объект имеет поле в качестве объекта, который, в свою очередь, имеет массив строк. структура объекта, как указано ниже.
export class SearchRequest {id: string = undefined;partnerIds: PartnerIds = undefined;}
export class PartnerIds { partnerId: string[] = undefined;}
Теперь, когда я пытаюсь закодировать этот объект с помощью служебного кода (который отлично работает с обычным объектом), упомянутым ниже, он находится в неправильном формате из-за списка строк в нем.
generateQueryParams(searchRequest) {
let httpParams: HttpParams = new HttpParams({encoder: new CustomEncoderComponent()});
Object.keys(searchRequest).forEach(key => {
httpParams = httpParams.append(key, searchRequest[key]);
});
return httpParams;
}
Я попытался использовать приведенный ниже формат параметров запроса, но это не сработало.
1. id=123amp;partnerIds=XYZamp;partnerIds=ABC
2. id=123amp;partnerId[]=XYZamp;partnerId[]=ABC
3. id=123amp;partnerId=XYZamp;partnerId=ABC
Пожалуйста, подскажите, как передать этот объект (SearchRequest) в строке запроса в HttpClient?
Комментарии:
1. Не существует стандарта для кодирования чего-либо, кроме простых пар ключ-значение, в кодировку URL. Различные языки или фреймворки имеют свой собственный путь.
foo=baramp;foo=baz
,foo[]=baramp;foo[]=baz
,foo.0=baramp;foo.1=baz
… Это в основном зависит от вас и от того, как ваш сервер может / будет с этим справляться.2. Спасибо deceze за ваш ответ. Проблема здесь с любым из них заключается в том, что я получаю нулевые значения для поля partnerIds в конечной точке Java Rest.