#c# #asp.net #api #rest
Вопрос:
Я хочу опубликовать некоторые данные в веб-API с помощью restful client. Схема Json является:
{
"contact":{
"id":123,
"first_name":"Jimmy",
"last_name":"Dee",
"account_id":123,
"owned_by":123,
"email_addresses":[
{
"id":123,
"address":"jimmy@jimmydees.com"
}
],
"phone_numbers":[
{
"id":123,
"number":"123-123-1234",
"phone_number_type":"Main",
"extension":"ex 5"
}
]
}
}
Мой код на C# для этого таков:
// Endpoint: POST /v1/contacts.json?contact={contact parameters}
var client = new RestClient($"https://api.tripleseat.com/v1/contacts.json")
{
Authenticator = OAuth1Authenticator.ForProtectedResource(consumerKey, consumerSecret, null, null)
};
string jsonString=JObject.FromObject( new
{
first_name = "Foo",
last_name = "foo",
account_id = 15998446,
owned_by = 175177,
email_addresses = new [] { new
{
address = "test@gmail.com" }
},
phone_numbers = new[] { new
{
number = "38239283928"
}
}
}
}).ToString();
var request = new RestRequest("?contact=", Method.POST);
request.AddParameter("application/json", jsonString, ParameterType.RequestBody);
RestResponse response = (RestResponse)client.Execute(request);
Когда я запускаю этот код, генерируется ответ с кодом состояния 200:
{
"contact":{
"id":21152554,
"first_name":"Foo",
"last_name":"foo",
"account_id":15998446,
"owned_by":175177,
"email_addresses":[
{
"id":21692948,
"address":""
}
],
"phone_numbers":[
{
"id":39428416,
"number":null,
"phone_number_type":null,
"extension":null
}
]
}
}
Проблема в том, что вложенные объекты адреса электронной почты и номер телефона имеют нулевые значения. Мой вопрос в том, как я могу разместить эти вложенные объекты в своем запросе?
Комментарии:
1. Ваш последний json, похоже, не соответствует вашему коду, на самом деле мне трудно понять, в чем на самом деле проблема, или если этот последний json от сторонней службы или нет
2. Я пытаюсь понять этот API. Что произойдет, если вы попытаетесь использовать в повторном запросе полученные идентификаторы для номера телефона и адреса электронной почты? Возможно, существуют отдельные конечные точки для адресов электронной почты и телефонных номеров. И здесь вы можете назначить контакту только адрес и номер телефона.
3. Код, показывающий, как вы генерируете запрос , но, предположительно, проблема с ответом («Когда я запускаю этот код, генерируется ответ с кодом состояния 200»). Невозможно узнать, почему ответ вообще содержит какие-либо поля, не зная кода на стороне сервера для этого метода.
4. Проблема в том, что когда я отправляю данные на сервер, вложенный объект, т. е. адреса электронной почты и номера телефонов, равны нулю