Coder Social home page Coder Social logo

Comments (8)

bhenderson avatar bhenderson commented on April 26, 2024

You could just combine the two routes. (See http.StripPrefix)

prefix := "/public/"
fileServer := http.FileServer("./public")
r.GET("/*filepath", func(c *gin.Context) {
    if p := strings.TrimPrefix(c.Req.URL.Path, prefix); len(p) < len(c.Req.URL.Path) {
        c.Req.URL.Path = p
        fileServer.ServeHTTP(c.Writer, c.Req)
        return
    }
    //...
})

from httprouter.

michael4reynolds avatar michael4reynolds commented on April 26, 2024

Thanks @bhenderson, This works well until I have to load css or js assets from another prefix. Say the page is now at web/somedir/ the index page loads but now the assets do not unless I identify each and every prefix. Ultimately I'd be able to have the routes and static functions operate independently. Being used to other languages where the order of the routes matter, httprouter is a better system but adjusting to how to set up the routes without regex for a single page app is challenging.

from httprouter.

hoffoo avatar hoffoo commented on April 26, 2024

You can solve this problem in the view, one way to do it is pass your template the prefix you want for the particular page. This way you can use one template and always know where the assets are relative to it.

from httprouter.

michael4reynolds avatar michael4reynolds commented on April 26, 2024

@hoffoo That's a great idea. I'll give it a shot.

from httprouter.

michael4reynolds avatar michael4reynolds commented on April 26, 2024

Basically, I'm trying to duplicate the following node.js snippet using httprouter:

app.use(express.static(__dirname + '/public'));
app.get('*', function(req, res) {
    res.render('index');
});

from httprouter.

bhenderson avatar bhenderson commented on April 26, 2024

@mr170 maybe you should set the NotFound handler to serve your index, and configure routes for your static files.

https://godoc.org/github.com/julienschmidt/httprouter#Router

from httprouter.

julienschmidt avatar julienschmidt commented on April 26, 2024

Using NotFound is an option, but not a good one IMO. Currently there is no nice way to implement a routing structure like this with HttpRouter.

But I see that there is a demand for something "catch-rest" like (see also #7 and #4), . I have plans to add an option for this.

from httprouter.

jbrodriguez avatar jbrodriguez commented on April 26, 2024

@julienschmidt I browsed through the commits after this date, but didn't seem to find an option for this. Would you please provide some feedback ?
Perhaps #4's solution, adding RedirectTrailingSlash and RedirectFixedPath off, is the way to go ?

from httprouter.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.