title: ServiceStack DELETE request is default object, POST works fine
body: <p>I have a DTO coming from the Javascript client. When I try to send with <code>deleteFromService</code> the request object is empty (looks like it was just new-ed up). If I change the method to <code>postToService</code> the request object is populated properly.</p>
  
  <p>I am using the 3.9 API. I am at a loss here.</p>
  
  <p>Service:</p>
  
  <pre><code>public object Post(Order request)
  {
      return _orderRepository.InsertOrder(request);
  }
  
  public object Delete(Order request)
  {
      _orderRepository.DeleteOrder(request.Uuid);
      return true;
  }
  </code></pre>
  
  <p>JS:</p>
  
  <pre><code>//Fails
  serviceClient.deleteFromService("order", order, function () { }, deleteFailed);
  //Works
  serviceClient.postToService("order", order, function () { }, deleteFailed);
  </code></pre>
  
  <hr>
  
  <p><strong>Update:</strong></p>
  
  <p>I found the issue in the <a href="https://github.com/ServiceStack/ServiceStack/blob/master/src/ServiceStack/WebHost.Endpoints/Support/EndpointHandlerBase.cs#L60" rel="noreferrer">ServiceStack source code</a>. It is treating a DELETE like a GET and creating the request object instead of the body, like it does for a POST.</p>
  
  <pre><code>if (httpMethod == HttpMethods.Get || httpMethod == HttpMethods.Delete || httpMethod == HttpMethods.Options)
  {
      try
      {
          return KeyValueDataContractDeserializer.Instance.Parse(queryString, operationType);
      }
  }
  </code></pre>
  
  <p>The problem with doing this, is that the <a href="https://github.com/ServiceStack/ServiceStack/blob/master/release/latest/js/JsonServiceClient.js#L85" rel="noreferrer">ServiceStack JS client</a> creates the DELETE request using the same logic as the POST, by stuffing the data you send it into the body (technically the jQuery XHR <code>data</code> prop), meaning there is no way for the server to get the message the client is sending.</p>
  
  <p>Am I reading this right? Is the JS client's delete broken?</p>