zoukankan      html  css  js  c++  java
  • http.StripPrefix 的参数含义

    看下面两行代码:

    http.Handle("/file/", http.StripPrefix("/file", http.FileServer(http.Dir("./output/"))))
    http.Handle("/static/", http.StripPrefix("/static/", http.FileServer(http.Dir("./output/"))))
    http.Handle("/file1", http.StripPrefix("/file1", http.FileServer(http.Dir("./output/"))))
    http.Handle("/file2", http.StripPrefix("/file2/", http.FileServer(http.Dir("./output/"))))

    注意看下图结果:

    • 1、2 行链接地址是带对应前缀的。
    • 3行链接地址不带
    • 4直接 404

     

    image

    image

     

    image

    image

     

    TrimPrefix

    TrimPrefix returns s without the provided leading prefix string. If s doesn't start with prefix, s is returned unchanged.

    StripPrefix

    // StripPrefix returns a handler that serves HTTP requests
    // by removing the given prefix from the request URL's Path
    // and invoking the handler h. StripPrefix handles a
    // request for a path that doesn't begin with prefix by
    // replying with an HTTP 404 not found error.
    func StripPrefix(prefix string, h Handler) Handler {
        if prefix == "" {
            return h
        }
        return HandlerFunc(func(w ResponseWriter, r *Request) {
            if p := strings.TrimPrefix(r.URL.Path, prefix); len(p) < len(r.URL.Path) {
                r.URL.Path = p
                h.ServeHTTP(w, r)
            } else {
                NotFound(w, r)
            }
        })
    }
    如上图代码所示,
    404 是触发了上面的 else 条件。
  • 相关阅读:
    回溯法---哈密顿回路(5)
    回溯法---n皇后问题(4)
    回溯法---n-着色问题(3)
    回溯法--算法框架(2)
    创建二叉树的所有深度上的节点链表
    笔试
    笔试 (2)
    LeetCode278-第一个错误的版本(二分查找)
    LeetCode46-全排列(递归)
    LeetCode258-各位相加(猜想公式)
  • 原文地址:https://www.cnblogs.com/ghj1976/p/5102556.html
Copyright © 2011-2022 走看看