2016-10-18 4 views
0

Consdier 다음 코드에 값을 전송하는 방법 :니켈 미들웨어 기능

나는 기능 landingdata를 사용하려면
extern crate nickel; 
use nickel::{Nickel, HttpRouter, Request, Response, MiddlewareResult}; 

fn main() { 
    let data = "wanted"; 
    let mut server = Nickel::new(); 
    server.get("/", landing); 
    server.listen("localhost:6767"); 
} 

fn landing<'a>(_: &mut Request, response: Response<'a>) -> MiddlewareResult<'a> { 
    response.send("not wanted") 
} 

.

답변

6

니켈 예제는 a way to pass a configuration을 서버 개체에 표시합니다.

은 본질적으로, 당신은 with_data 방법을 사용하여 Nickel 예를 인스턴스화 :

struct MyConfig { 
    greet: String, 
} 

let my_config = MyConfig { greet: "hello".to_string() }; 

let mut server = Nickel::with_data(my_config); 

을 그리고 당신의 핸들러는 server_data 방법을 통해 액세스 할 수 있습니다 :

let my_config = req.server_data(); 
res.send(&*my_config.greet); 

그래서, 당신의 구체적인 예에 ​​그 적용. 귀하의 코드는 다음과 같습니다 :

extern crate nickel; 
use nickel::{Nickel, HttpRouter, Request, Response, MiddlewareResult}; 

fn main() { 
    let data = "wanted"; 
    let mut server = Nickel::with_data(data); 
    server.get("/", landing); 
    server.listen("localhost:6767"); 
} 

fn landing<'a, 'mw>(request: &mut Request<&'a str>, response: Response<'mw, &'a str>) -> MiddlewareResult<'mw, &'a str> { 
    response.send(*request.server_data()) 
} 

결과 :

Nickel