Я написал WCF Rest Service, где в методе POST Json Object принимается как StudentDetails.Теперь я хочу проверить его структуру, чтобы он не содержал дополнительных полей / информации, чем указанные поля.
Ниже мой сервис (ServiceContract)
namespace RestService
{
[ServiceContract]
public interface IRestService
{
[OperationContract]
[WebInvoke(Method = "POST", UriTemplate = "/SaveStudent", RequestFormat =WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json)]
string SaveStudent(StudentDetails studentDetails);
}
[Serializable]
public class WebServiceDictionary : ISerializable
{
public Dictionary<string, string> Entries { get; }
public WebServiceDictionary()
{
Entries = new Dictionary<string, string>();
}
public WebServiceDictionary(SerializationInfo info, StreamingContext context)
{
Entries = new Dictionary<string, string>();
foreach (var entry in info)
Entries.Add(entry.Name, entry.Value.ToString());
}
public void GetObjectData(SerializationInfo info, StreamingContext context)
{
foreach (var entry in Entries)
info.AddValue(entry.Key, entry.Value);
}
}
[DataContract]
public class StudentDetails
{
[DataMember]
public WebServiceDictionary StudentDetail { get; set; }
}
}
Это реализация Сервиса
namespace RestService
{
public class RestService : IRestService
{
public string SaveStudent(StudentDetails studentDetails)
{
SqlHelper sql = new SqlHelper();
sql.OpenConnection();
WebServiceDictionary student = studentDetails.StudentDetail;
if (student.Entries.Keys.Count != 3)
{
WebOperationContext.Current.OutgoingResponse.StatusCode = System.Net.HttpStatusCode.BadRequest;
return null;
}
sql.SaveJson(student.Entries["Name"], student.Entries["Address"], int.Parse(student.Entries["Grade"]));
sql.CloseConnection();
return "Passed";
}
}
}
Таким образом, структура Json должна быть
{
"StudentDetail" :
{
"Name" : "ABC", "Address" : "ABC", "Grade":"10"
}
}
Я поставил проверки, чтобы не допустить принятия запроса, когда некоторые поля отсутствуют или работают нормально.Теперь я хочу, чтобы, когда данные Json содержали одну или несколько дополнительных данных, запрос не выполнялся (BadRequest).Например, если объект Json:
{
"StudentDetail" :
{
"Name" : "ABC", "Address" : "ABC", "Grade":"10", "Extra" : "Item"
}
}
Поскольку присутствует дополнительный элемент, он должен завершиться ошибкой (BadRequest).А также
{
"StudentDetail" :
{
"Name" : "ABC", "Address" : "ABC", "Grade":"10"
},
"New" : { "key" : "value" }
}
По мере появления дополнительного "Нового" элемента, который должен провалиться (BadRequest).
Пожалуйста, помогите мне.Спасибо