Путаница по поводу метода shouldRedirectRLocked (go1.11 src / net / http / server.go: 2259) - PullRequest
0 голосов
/ 26 августа 2018

Я читаю исходный код модуля http, и следующий код сбил меня с толку:

func (mux *ServeMux) shouldRedirectRLocked(host, path string) bool {
    p := []string{path, host + path}

    for _, c := range p {
        if _, exist := mux.m[c]; exist {
            return false
        }
    }

    n := len(path)
    if n == 0 {
        return false
    }
    for _, c := range p {
        if _, exist := mux.m[c+"/"]; exist {
            return path[n-1] != '/' <<- why not return true directly
        }
    }

    return false
}

В качестве комментария над этим методом: shouldRedirectRLocked сообщает, следует ли перенаправлять указанный путь и хостк пути + "/".Это должно произойти, если обработчик зарегистрирован для пути + "/", но не для пути - см. Комментарии в ServeMux.

c + "/" уже зарегистрирован и c нет, поэтому я думаю, что он должен возвращать true напрямую, но почему мы должны проверять path [n - 1]! = '/' ?Это вопрос по протоколу http?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...