Как мы встраиваем строку json в другую строку json для передачи в качестве параметра в POST API?
Если я создаю json без дочерней строки json, вызов POST будет успешным. Если я назначу свойство Orders
другой строке json, ответ будет NotFound
. Ниже приведена настройка в поставщике услуг:
[ServiceContract]
public interface ITransactionService
{
[OperationContract]
[WebInvoke(
UriTemplate = "addTransaction/{transactionJson}/{employeeId}/{token}",
RequestFormat = WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json)]
string AddTransaction(string transactionJson, string employeeId, string token);
}
Ниже приведен код, который вызывает RESTful POST API:
var transactionEntry = new TransactionTable()
{
Amount = (decimal)amount,
DateTime = DateTime.Now,
BusinessId = businessId,
EmployeeId = (int)employeeId,
Orders = orders
};
var transactionJson = JsonConvert.SerializeObject(transactionEntry);
// Build the POST request
var url = ConfigurationManager.AppSettings["serviceUrl"];
var client = new RestClient(url);
var request = new RestRequest("TransactionService.svc/addTransaction/{transactionJson}/{employeeId}/{token}", Method.POST);
request.AddUrlSegment("transactionJson", transactionJson);
request.AddUrlSegment("employeeId", employeeId);
request.AddUrlSegment("token", token);
// Execute the request
var response = client.Post(request);
Ответ будет "StatusCode: NotFound, Content-Тип: text / html; charset = utf-8, Content-Length: 6097) "
Вот как выглядит строка json:
{
"TransactionId":0,
"DateTime":"2019-11-02T08:29:16.3291335-07:00",
"Amount":55.0,
"BusinessId":123456789,
"CustomerId":null,
"EmployeeId":1,
"Orders":"to be assigned to a json orders string"
}
Это то, что Orders
строка выглядит так:
[
{"Id":0,"Category":"Manicure","Item":"The Deluxe Manicure","Price":22.0,"Time":20},
{"Id":0,"Category":"Pedicure","Item":"The Deluxe Pedicure","Price":35.0,"Time":35}
]
Это построенный transactionJson
из отладчика:
{"TransactionId":0,"DateTime":"2019-11-02T08:53:29.2862602-07:00","Amount":57.0,"BusinessId":123456789,"CustomerId":null,"EmployeeId":1,"Orders":"[{\"Id\":0,\"Category\":\"Manicure\",\"Item\":\"The Deluxe Manicure\",\"Price\":22.0,\"Time\"