I'm rather a fan of using gRPC in a stack. It has its cons, but you get a generated client/server that is type-safe, even across different languages.
Would love to hear alternatives which do the same thing. I know one possibility is OpenAPI specs generated from Django Rest Framework.