У меня есть интерфейс машинописного текста, который общается с моим бэкэндом Java через REST. Я только что добавил еще одну простую конечную точку отдыха, но отправка объекта на бэкэнд и попытка его правильного приведения не работают, потому что отправленное тело является linkedHashMap?
сервис.тс
createEvent(event: CustomerEvent): Observable<HttpResponse<CustomerEvent>> {
return this.http.post<CustomerEvent>(this.eventUrl, event, { observe: 'response' });
}
клиент-событие-model.ts
export class CustomerEvent {
constructor(public customer: ICustomer, public event: String) {}
}
клиент.модель.тс
export interface ICustomer {
id?: number;
name?: string;
email?: string;
address?: string;
}
export class Customer implements ICustomer {
constructor(public id?: number, public name?: string, public email?: string, public address?: string) {}
}
Отдых
public ResponseEntity<Object> addCustomerEvent(@RequestBody Object customerEvent) {
log.info("~REST request to create new event " + customerEvent.toString());
CustomerEvent e = (CustomerEvent) customerEvent; // <<---- FAILS cannot cast LinkedHashMap to CustomerEvent
}
Почему он отправляет LinkedHashMap?
Благодарность




Вам нужно использовать:
@RequestBody CustomerEvent customerEvent
Так как это позволит Spring десериализовать тело запроса в экземпляр объекта CustomerEvent.
Ссылка: https://www.baeldung.com/spring-request-response-body
это то, что я сделал, и он правильно десериализует клиента, но не событие. он всегда остается нулевым.