Ваш веб-сервис немного отстал, Ваш Запрос DTO должен продолжаться RestServiceBase<TRequest>
, а не ваш ответ. И если вы создаете службу REST-ful, я рекомендую название (т.е. запросить DTO) вашей службы как существительное, например, в этом случае возможно коды.
Также я рекомендую иметь и использовать тот же тип ответа со строгим типом для вашей службы с именем, соответствующим соглашению «RequestDto}, например CodesResponse.
Наконец, верните пустой ответ вместо нуля, так что клиенты должны обрабатывать только пустой набор результатов, а не нулевой ответ.
Вот как бы я переписал ваш сервис:
[RestService("/codes/{Type}")]
public class Codes {
public string APIKey { get; set; }
public string Type { get; set; }
}
public class CodesResponse {
public CodesResponse() {
Results = new List<string>();
}
public List<string> Results { get; set; }
}
public class CodesService : RestServiceBase<Codes>
{
public override object OnGet(Codes request)
{
APIClient c = VenueServiceHelper.CheckAndGetClient(request.APIKey,
VenueServiceHelper.Methods.ListDestinations);
var response = new CodesResponse();
if (c == null) return response;
if (request.Type == "counties")
response.Results = General.GetListOfCounties();
else if (request.Type == "destinations")
response.Results = General.GetListOfDestinations();
return response;
}
}
Вы можете использовать атрибут [RestService] или следующий маршрут (который делает то же самое):
Routes.Add<Codes>("/codes/{Type}");
Что позволит вам позвонить в службу так:
http://localhost:5000/codes/counties?apikey=xxx&format=xml