I'm an Android Developer and also have some knowledge of RESTful API development. Currently I'm building an API using Dot Net Web API. Everything's working fine but I'm still concerned with the design.
The core concern for me now is what exactly should be the Metadata of the response like what other helpful elements I can add apart from 'Response Code' and 'Response Message'.
Second concern for me is that should the request be asynchronous or the query or both.
And the last concern is what technique should I use to make a stateful communication like JWT or Basic Authentication, etc. stateless.
First you should read chapter 5 of Architectural Styles and the Design of Network-based Software Architectures by Roy Thomas Fielding. You will learn at first hand about architectural constraints, elements and views of REST.
The core concern for me now is what exactly should be the Metadata of the response like what other helpful elements I can add apart from 'Response Code' and 'Response Message'.
One architectural element of the REST are Representations. Representations allows the client the interpretation of the response. In case of RESTful HTTP Representations are realized by the MIME-type. For more information see [2]. Other aspects you should consider are URI, supported HTTP methods, URL parameters and message body.
Second concern for me is that should the request be asynchronous or the query or both.
One architectural constraint of REST is the client-server architectural style. Therefore your server should handle concurrent requests to handle more than one client request at a time. If a query, method or function is processed asynchronously doesn't matter for being RESTful.
And the last concern is what technique should I use to make a stateful communication like JWT or Basic Authentication, etc.
JWT and basic authentication are both stateless authentication methods. The term stateless means that a client request contains all information which is needed for the server to process the client request.