implementation methods: GET, POST, PUT and DELETE