Use macro to generate DSL and support delete,patch verbs

This commit is contained in:
Sdogruyol 2015-10-24 22:19:46 +03:00
parent f2e385801f
commit fa00265345
3 changed files with 8 additions and 8 deletions

View File

@ -37,7 +37,7 @@ dependencies:
## Status
Basic `get`, `put`, `post` and `head` routes can be matched, and request parameters can be obtained.
Basic `get`, `put`, `post`, `patch`, `delete` and `head` routes can be matched, and request parameters can be obtained.
## Thanks

View File

@ -1,7 +1,7 @@
def get(path, &block : Kemal::Context -> _)
Kemal::Handler::INSTANCE.add_route("GET", path, &block)
end
HTTP_METHODS = %w(get post put patch delete)
def post(path, &block : Kemal::Context -> _)
Kemal::Handler::INSTANCE.add_route("POST", path, &block)
end
{% for method in HTTP_METHODS %}
def {{method.id}}(path, &block : Kemal::Context -> _)
Kemal::Handler::INSTANCE.add_route({{method}}.upcase, path, &block)
end
{% end %}

View File

@ -17,7 +17,7 @@ class Kemal::Handler < HTTP::Handler
@routes << Route.new(method, path, &handler)
end
def exec_request(request)
def exec_request(request)
components = request.path.not_nil!.split "/"
@routes.each do |route|
params = route.match(request.method, components)