When it comes to SharePoint usage there are many examples in the web about REST GET calls, but not so much on POST. So here goes..
My target REST method signature is as follows
public List<Details> GetDetails(string ids)
The method declaration in the Interface is as below:
[OperationContract]
[WebInvoke(Method = "POST", UriTemplate = "GetDetails", BodyStyle = WebMessageBodyStyle.Wrapped,
RequestFormat = WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json)]
List<Details> GetDetails(string ids);
The trick here is making the web message body style "Wrapped"
Now from the client-side you make a call to the method.
In my example I use the service invocation within a AngularJS function. You send the parameter information in the data
$scope.TestMethod = function () {
var endpointAddress = "http://myTestSite.com/sites/TestSite/_vti_bin/CustomService.svc";
var callurl = endpointAddress + "/GetDetails";
$.ajax({
type: "POST",
url: callurl,
contentType: "application/json; charset=utf-8",
dataType: "json",
data: '{"ids": "18"}',
success: function () {
alert('success');
},
error: function () {
alert('error');
}
});
};
My target REST method signature is as follows
public List<Details> GetDetails(string ids)
The method declaration in the Interface is as below:
[OperationContract]
[WebInvoke(Method = "POST", UriTemplate = "GetDetails", BodyStyle = WebMessageBodyStyle.Wrapped,
RequestFormat = WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json)]
List<Details> GetDetails(string ids);
The trick here is making the web message body style "Wrapped"
Now from the client-side you make a call to the method.
In my example I use the service invocation within a AngularJS function. You send the parameter information in the data
$scope.TestMethod = function () {
var endpointAddress = "http://myTestSite.com/sites/TestSite/_vti_bin/CustomService.svc";
var callurl = endpointAddress + "/GetDetails";
$.ajax({
type: "POST",
url: callurl,
contentType: "application/json; charset=utf-8",
dataType: "json",
data: '{"ids": "18"}',
success: function () {
alert('success');
},
error: function () {
alert('error');
}
});
};