def __request_message_descriptor(self, request_kind, message_type, method_id,<EOL>request_body_class):
if request_body_class:<EOL><INDENT>message_type = request_body_class<EOL><DEDENT>if (request_kind != self.__NO_BODY and<EOL>message_type != message_types.VoidMessage()):<EOL><INDENT>self.__request_schema[method_id] = self.__parser.add_message(<EOL>message_type.__class__)<EOL>return {<EOL>'<STR_LIT>': self.__request_schema[method_id],<EOL>'<STR_LIT>': '<STR_LIT>',<EOL>}<EOL><DEDENT>
Describes the parameters and body of the request.

        Args:
          request_kind: The type of request being made.
          message_type: messages.Message or ResourceContainer class. The message to
              describe.
          method_id: string, Unique method identifier (e.g. 'myapi.items.method')
          request_body_class: messages.Message of the original body when using
              a ResourceContainer. Otherwise, this should be null.

        Returns:
          Dictionary describing the request.

        Raises:
          ValueError: if the method path and request required fields do not match