#c# #wcf #json #api
#c# #wcf #json #API
Вопрос:
У меня есть Rest API, разработанный с использованием WinAPI WCF.
public class paramval
{
string name;
}
[ServiceContract]
public class myQuery
{
[WebInvoke(UriTemplate = "{systemCode}/{objectID}", Method = "POST")]
public myResult Get(string systemCode, int objectID, paramval pval)
{
}
}
Значение pval всегда равно null.
Я использую тестовый клиентский инструмент WCF Web API.
URL: http://localhost:11556/api/contacts/abc/111
Request: POST
Headers: Accept:*/*
Content-Type:application/json
Content-Length:16
Body {"name":"Frank"}
Есть идеи?
Комментарии:
1. Если я изменю тип pval на jsonString, я смогу получать объекты Json. Хотя я хотел бы что-то более общее.
Ответ №1:
Попробуйте аннотировать свой класс с помощью DataContractAttribute
и DataMemberAttribute
и использовать общедоступное свойство для Name
(изменил класс и имя свойства, чтобы использовать оболочку pascal):
[DataContract]
public class ParamVal
{
[DataMember(Name = "name")]
public string Name { get; set; }
}
Комментарии:
1. Вам не нужно добавлять DataContract и DataMember с новым WCF WebAPI
Ответ №2:
Ваш UriTemplate
указывает только сопоставления для systemCode
и objectID
. Нужно ли что-то добавить в шаблон, чтобы также извлечь значение для свойства Name paramval
?
Комментарии:
1. Параметр отправляется не в URL, а в теле сообщения