Итак, поскольку я изучал это новое пространство, мне нужно было сделать вызов Web API. Существует много путаницы между версиями всего. Во всяком случае, я нашел что-то, что работает, и я знаю, что «лучшие практики» слишком субъективны. Однако я не знаю, существует ли более прямой способ сделать это.
Вот формат ответа, который я ищу:
export interface AuditDetail {
updatedAt: Date;
updatedBy: string;
}
Вот модель на стороне сервера:
[DataContract]
public class PlanHistory
{
[Key]
public int Id { get; set; }
[DataMember]
[MaxLength(50)]
public string UpdatedBy { get; set; }
[DataMember]
public DateTime UpdatedAt { get; set; }
}
А вот мой угловой сервис:
getAuditDetails(planId: number, fieldName: string, fieldValue: string): Observable<AuditDetail> {
//return of({ updatedAt: new Date(), updatedBy: "Hawchorn" }); //Tooltip displays data
interface PlanHistory //Created because couldn't figure out how to directly map from Json to an Audit Detail.
{
UpdatedAt: Date;
UpdatedBy: string;
}
this.log("Retrieving Audit Details");
return this.http
.get<PlanHistory>(this.webApiUrl +
"PlanHistories?planId=" +
planId +
"&fieldName=" +
fieldName +
"%20&fieldValue=" +
fieldValue).pipe(map((response: PlanHistory) => {
return <AuditDetail>{ updatedAt: response.UpdatedAt, updatedBy: response.UpdatedBy };
}));
}
Это работает. Но я ненавижу делать этот промежуточный интерфейс.
Так как мне сделать то же самое, прямо из JSON в AuditDetail
?