Я получил рекомендацию в другом потоке, что я должен использовать ServiceClient при использовании
ServiceStack API.
Я хотел бы создать шаблонную функцию, которая может публиковать объекты любого типа, например:
public Post2<T>(object: T, url: string, httpOptions)
{
try
{
var client = new JsonServiceClient(`${environment.apiEndpoint}` + url)
client.headers = httpOptions;
client.post<T>(object);
}
catch(e)
{
}
}
Проблема в том, что он говорит мне, что «аргумент типа T не может быть назначен параметру типа IReturn.
typcript-ref http://techstacks.io сгенерировал следующие DTO (для этой цели)
// @Route("/Equipments", "POST")
export class CreateEquipment
{
public name: string;
}
// @Route("/Equipments/{Name}", "GET")
export class GetEquipment implements IReturn<Equipment>
{
public name: string;
public createResponse() { return new Equipment(); }
public getTypeName() { return 'GetEquipment'; }
}
// @Route("/Equipments", "GET")
export class GetEquipments implements IReturn<Equipment[]>
{
public createResponse() { return new Array<Equipment>(); }
public getTypeName() { return 'GetEquipments'; }
}
// @Route("/Equipments/{Name}", "DELETE")
export class DeleteEquipment
{
public name: string;
}
Я попытался использовать следующий код для создания запроса Post.
var request = new CreateEquipment();
request.name = equipment.name;
var client = new JsonServiceClient(environment.apiEndpoint);
var response = await client.post(request);
Это дает ошибку в VS17; Аргумент типа «CreateEquipment» не может быть назначен параметру типа «IReturn <{}>». Свойство createResponse отсутствует в типе «CreateEquipment»
То, что я предполагаю, означает, что я что-то упустил в моей ServiceModel