Recent DRF releases have been building the CoreAPI schema definition format, which is a generic schema language like OpenAPI (nee Swagger) or API Blueprint.
The other headline DRF feature (API docs) also builds on the CoreAPI schema.
If you prefer existing standards, you can map your DRF API to Swagger using https://github.com/marcgibbons/django-rest-swagger/, and then use swagger-js (or swagger-codegen) to generate client implementations -- though the django-rest-swagger project is currently partially broken due to having migrated to CoreAPI before the latter obtained feature-parity with Swagger; the 0.3 version is more full-featured.
Just want to add that swagger-js is a "dynamic" API client, which means it will load the OpenAPI/Swagger spec [1] during runtime.
If you prefer static API clients/SDKs, please try Swagger Codegen [2] (free, open-source) instead, which supports 30+ API clients and 20+ server stubs as well as API documentations.
To be precise I'd call it a "dynamic API client". The codebase doesn't change, you read the schema and corresponding actions become available on the client.
There are also "autogenerated API clients", where the API code is templated, based on the API schema.
(I think the swagger-js client also falls into the "dynamic" category, tho most other language implementations based on swagger fall into the templated "autogenerated" category.)
And, yup, working towards bring Core API up to feature parity with Swagger, so that you can fully interoperate with everything that the Swagger ecosystem already provides.
They describe what it means later in the page [1]:
> The JavaScript client library allows you to load an API schema, and then interact with that API at an application layer interface, rather than constructing fetch requests explicitly.
It looks like it generates a JS library that makes it easy to use the same resource names in your JS as Django without having to write route handlers by hand. In their example, it looks like they list projects by calling
A DRF API + React stack seems like a good combo so I've been looking into that workflow.