title: Web Api Parameter binding: snake_case to camelCase
body: <p>I'm doing some work on a new web api project, and my methods/ parameters follow the standard c# naming format; the method name is PascalCase, the parameters are camelCase.</p>
  
  <p>Unfortunately I just discovered that documentation to a client has been published with all the parameters being ruby/ php style, with snake_case type parameter names.</p>
  
  <p>The return objects and POST object were easy to convert; I used a version of <a href="https://gist.github.com/crallen/9238178" rel="nofollow">crallen's code</a> to replace the default Json input/ output, but on GET requests, there doesn't seem to be such an easy answer.</p>
  
  <p>I'd prefer to keep my naming conventions the same.  Is there a way to tell the binder to automatically change my_parameter into myParameter for all requests?  Do I have to build a completely different binder?</p>
  
  <p>For example, if I have this as a method signature:</p>
  
  <pre><code>[Route("~/api/Widgets")]
  [ResponseType(typeof(Widget))]
  public async Task&lt;HttpResponseMessage&gt; GetWidget(int widgetId, int groupId)
  {
      . . .
  </code></pre>
  
  <p>I would like to be able to use this in the URL</p>
  
  <pre><code>https://myserver.com/api/Widgets?widget_id=12345&amp;group_id=54321
  </code></pre>
  
  <p>Do I have to reinvent the wheel to get this to work?  I've seen examples of replacing specific type model binders, but nothing at this level.  Am I better off just changing my parameter names in code?</p>