过滤器

包路径: github.com/caicloud/nirvana/service

在某些场景下,我们需要从源头对请求进行处理和过滤。Nirvana 提供了 Filter 机制,可以在收到一个请求的时候,立刻进行处理。并根据 Filter 的返回值来确定是直接丢弃该请求还是继续处理。

  1. // Filter can filter request. It has the highest priority in a request
  2. // lifecycle. It runs before router matching.
  3. // If a filter return false, that means the request should be filtered.
  4. // If a filter want to filter a request, it should handle the request
  5. // by itself.
  6. type Filter func(resp http.ResponseWriter, req *http.Request) bool

Filter 在整个 Nirvana 框架中处于最高优先级。Filter 返回 false 则表示请求不应该被继续处理,立刻丢弃。

Nirvana 提供的一些 Filters

RedirectTrailingSlash

这个过滤器判断 URL Path 尾部是不是存在 /,如果存在就重定向到没有 / 的路径上。

FillLeadingSlash

这个过滤器判断 URL Path 首部有没有 /,如果没有就加上 /

ParseRequestForm

这个过滤器只针对 application/x-www-form-urlencodedmultipart/form-data,然后 Parse 这两种类型的请求体,并转换为 Form 和 File。