Taking Lucas's suggestion of using restws, I have configured the path in the module as such:

    function mymodule_restws_resource_info() {
        return array(
            'mymodule_person' => array(
                'label' => t('Person'),
                'class' => 'PersonResourceController',
                'menu_path' => 'api/person',
            ),
        );
    }

That part seems to work, because when I send a POST transaction via Advanced Rest Client in chrome, I get a 200 response (I get a 404 if I change the request url). 

That said, in the module I also throw an error if attempting an update, delete or read. When I send any of those, I still get a 200 response.

Any of GET, POST, PUT or UPDATE gives me

    Response does not contain any data

including the create method in the resource controller, so it's not firing.

Do I need to do something to invoke it beyond hitting the api/person with a post payload? 

--
---
drupal.org/user/367108
linkedin.com/in/jeffrgreenberg
accidentalcoder.com / ayendesigns.com
@accidentalcoder