def data(self):
        """Returns the request data as a dictionary.

        Merges the path parameters, GET parameters and POST parameters
        (form-encoded or JSON dictionary). If a key is present in multiple of
        these, the first one defined is used.
        """
        if self._data:
            return self._data

        retval = {}
        data = self.get_request_data()
        for subdata in data:
            for key, value in subdata.iteritems():
                if not key in retval:
                    retval[key] = value

        self._data = retval
        return retval