The 127.0.0.1:8084/apidoc/  return a 404

Demo
package main

import (
"fmt"
"github.com/gorilla/mux"
"net/http"
)

func main() {
//http.Handle("/apidoc/", http.StripPrefix("/apidoc", 
http.FileServer(http.Dir("api-swagger"))))
//if err := http.ListenAndServe(":8082", nil); err != nil {
// fmt.Println(err)
//}
router := mux.NewRouter()
router.PathPrefix("/apidoc/").Handler(http.StripPrefix("/apidoc/", http.
FileServer(http.Dir("api-swagger"))))
if err := http.ListenAndServe(":8084", nil); err != nil {
fmt.Println(err)
}
//
//router.Use(mux.CORSMethodMiddleware(router))
}

在2014年1月21日星期二 UTC+8 14:51:37<Toni Cárdenas> 写道:

> The standard net/http ServeMux (which is the standard handler you are 
> using when you use `http.Handle`) and the mux Router have different ways of 
> matching an address. See the differences between 
> http://golang.org/pkg/net/http/#ServeMux and 
> http://godoc.org/github.com/gorilla/mux.
>
> So basically, http.Handle('/images/', ...) matches '/images/whatever', 
> while myRouter.Handle('/images/', ...) _only_ matches '/images/', and if 
> you want to handle '/images/whatever', you have to 1. set a regular 
> expression match in your router or 2. use the PathPrefix method on your 
> router, like:
>
> 1. myRouter.Handle('/images/{rest}', http.StripPrefix("/images/", 
> http.FileServer(http.Dir(HomeFolder + "images/"))))
> 2. myRouter.PathPrefix("/images/").Handler(http.StripPrefix("/images/", 
> http.FileServer(http.Dir(HomeFolder + "images/"))))
>
> On Tuesday, January 21, 2014 5:17:14 AM UTC+1, harvey....@gmail.com wrote:
>>
>> The problem I'm seeing is that I'm trying to use the http.FileServer with 
>> the Gorilla mux Router.Handle function.
>>
>> This doesn't work (the image returns a 404)..
>>
>>   myRouter := mux.NewRouter()
>>   myRouter.Handle("/images/", http.StripPrefix("/images/", 
>> http.FileServer(http.Dir(HomeFolder + "images/"))))
>>
>> this works (the image is shown ok)..
>>
>>   http.Handle("/images/", http.StripPrefix("/images/", 
>> http.FileServer(http.Dir(HomeFolder + "images/"))))
>>
>>
>> Simple go web server program below, showing the problem...
>>
>>
>> package main
>>
>> import (
>>     "fmt"
>>     "net/http"
>>     "io"
>>     "log"
>>     "github.com/gorilla/mux"
>> )
>>
>> const (
>>     HomeFolder = "/root/test/"
>> )
>>
>> func HomeHandler(w http.ResponseWriter, req *http.Request) {
>>     io.WriteString(w, htmlContents)
>> }
>>
>> func main() {
>>
>>     myRouter := mux.NewRouter()
>>     myRouter.HandleFunc("/", HomeHandler)
>>     //
>>     // The next line, the image route handler results in 
>>     // the test.png image returning a 404.
>>     // myRouter.Handle("/images/", http.StripPrefix("/images/", 
>> http.FileServer(http.Dir(HomeFolder + "images/"))))
>>     //
>>     myRouter.Host("mydomain.com")
>>     http.Handle("/", myRouter)
>>
>>     // This method of setting the image route handler works fine.
>>     // test.png is shown ok.
>>     http.Handle("/images/", http.StripPrefix("/images/", 
>> http.FileServer(http.Dir(HomeFolder + "images/"))))
>>
>>     // HTTP - port 80
>>     err := http.ListenAndServe(":80", nil)
>>
>>     if err != nil {
>>         log.Fatal("ListenAndServe: ", err)
>>         fmt.Printf("ListenAndServe:%s\n", err.Error())
>>     }
>> }
>>
>> const htmlContents = `<!DOCTYPE HTML>
>> <html lang="en">
>>   <head>
>>     <title>Test page</title>
>>     <meta charset = "UTF-8" />
>>   </head>
>>   <body>
>>     <p align="center">
>>         <img src="/images/test.png" height="640" width="480">
>>     </p>
>>   </body>
>> </html>
>> `
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/d092cb74-9ad9-48d9-9fee-5e305356d211n%40googlegroups.com.

Reply via email to