Comments (13)
technically it is possible to do, but there is no easy way. You can register application handler with ApplicationBuilder::Handler
, it accepts prefix, then you can split prefix and get tail.
would you like to implement tail match for actix web?
from actix-web.
@fafhrd91 yes. I want do a SPA with actic-web. so when request other paths it will return index.html.
like:
'/router/one' ---> index.html
'/router/two' ---> index.html
......
from actix-web.
for your example you can use following example:
Application::default("/")
.resource("/router/{section}", |r| {
match r.params().get("section") {
Some("one") => { do something },
Some("two") => { do something else },
_ => HTTPNotFound
}
}))
is this what you need? you can match only one section at the moment.
from actix-web.
@fafhrd91 no , I want match any paths not someone. like '/router/{anyPaths}'
in rocket.rs like :
#[get("/page/<path..>")]
fn path(path: PathBuf) -> io::Result<NamedFile> {
NamedFile::open("webfront/index.html")
}
Is there a easy way do this current?
from actix-web.
it is not explicitly implemented at the moment. Would you like to participate in actix-web development and add this functionality?
there is temporary solution:
Application::default("/")
.handler("/router/", |r| {
let tail = r.path()[r.prefix_len()..];
println!("Tail: {:?}", tail);
HTTPOk
}))
tail
would contain everything after /router/
prefix
from actix-web.
if you want just serve files from filesystem you can use https://github.com/actix/actix-web/blob/master/src/staticfiles.rs#L26
from actix-web.
actix-web is missing a lot of staff, any help is welcome!
from actix-web.
I just added tail pattern https://github.com/actix/actix-web/blob/master/src/recognizer.rs#L140
you can use it like this:
Application::default("/")
.handler("/router/{tail:*}", |r| {
let tail = r.match_info().get("tail").unwrap();
println!("Tail: {:?}", tail);
HTTPOk
}))
I didn't test it though
from actix-web.
I'll close issue. reopen if you think we should add something else
from actix-web.
@fafhrd91 please provide support reponse return file.
from actix-web.
Could you provide pull request?
from actix-web.
here is example
extern crate actix_web;
use actix_web::*;
use std::path::PathBuf;
fn index(req: HttpRequest) -> Result<fs::NamedFile> {
let path: PathBuf = req.match_info().query("tail")?;
Ok(fs::NamedFile::open(path)?)
}
fn main() {
Application::default("/")
.resource(r"/a/{tail:*}", |r| r.get(index))
.finish();
}
from actix-web.
I dropped tail pattern, but it possible to do the same with custom regex ".*" :
extern crate actix_web;
use actix_web::*;
use std::path::PathBuf;
fn index(req: HttpRequest) -> Result<fs::NamedFile> {
let path: PathBuf = req.match_info().query("tail")?;
Ok(fs::NamedFile::open(path)?)
}
fn main() {
Application::default("/")
.resource(r"/a/{tail:.*}", |r| r.method(Method::GET).f(index))
.finish();
}
from actix-web.
Related Issues (20)
- websocket bug!Cannot complete one websocket client to send a message to another client
- Why is the code below why version 4 cannot access httpserver, but version 3 can? HOT 1
- awc CONNECT method support
- add Proxy-Connection header HOT 3
- Filter out completely impossible characters.
- Add macro for route handler accepting all HTTP methods HOT 13
- Compilation fails when using the latest version of rustls HOT 5
- Add pattern syntax for optional trailing slash
- [How to] Middleware `Response body` manipulation.
- Add support to be able to test the route tree using `match_pattern` and `match_name`. HOT 2
- Connecting to the database from an external network causes a spike in connections HOT 1
- actix-http: Compilation fails HOT 1
- Err(NoWebsocketUpgrade) HOT 1
- 在 c++开发中,使用ws进行请求。会因为路径上有中文而报错,In c++ development, using ws for requests will result in an error due to Chinese characters in the path. HOT 1
- 在 c++开发中,使用ws进行请求。会因为路径上有中文而报错,In c++ development, using ws for requests will result in an error due to Chinese characters in the path. HOT 1
- actix-web doesn't compile with rustls 0.23.1 HOT 3
- target mips-unknown-linux-musl compilation failed
- Unexpected routing HOT 1
- Seems like web::Json can't deserilize json with nested keys as payload inside requests into rust structs
- Unable to get app_data information in middleware HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from actix-web.