fox
fox copied to clipboard
Router support to POST, PUT, PATCH, DELETE and others.
Today dynamic router support only GET requests, then, I think that is good idea to support other rest request types.
For now, I think that is good to suport GET, POST, PUT, DELETE, OPTIONS, LINK, UNLINK and for future, support to HEAD, TRACE and CONNECT.
Reference: http://www.restapitutorial.com/lessons/httpmethods.html
I have a possible conception to solve this.
Is possible to use request type as a namespace part, then will be possible do redirect to controller in accordance with the request as example below.
request = POST /user
request => router [ $Controller = new \Fox\Controller\Post\User() ] => view
request = GET /user/login
request => router [ $Controller = new \Fox\Controller\Get\User() ] => view
request = PUT /user/{id}
request => router [ $Controller = new \Fox\Controller\Put\User() ] => view
request = DELETE /user/{id}
request => router [ $Controller = new \Fox\Controller\Delete\User() ] => view
Other option is inverted class and request type, then is more easy to group and manage, as example below:
request = POST /user
request => router [ $Controller = new \Fox\Controller\User\Post(); ] => view
request = GET /user/login
request => router [ $Controller = new \Fox\Controller\User\Get(); $Controller->login(); ] => view
request = PUT /user/{id}
request => router [ $Controller = new \Fox\Controller\User\Put(id); ] => view
request = DELETE /user/{id}
request => router [ $Controller = new \Fox\Controller\User\Delete(id); ] => view