2016-09-12 17 views
-3

我想使用鎳模板返回一個JSON文件。我發現,返回JSON響應一些API示例代碼和修改它:如何使用鎳模板返回JSON文件?

extern crate rustc_serialize; 
#[macro_use] 
extern crate nickel; 

use nickel::{Nickel, HttpRouter, JsonBody}; 
use nickel::mimes::MediaType; 
use nickel::status::*; 
use rustc_serialize::json; 
use std::collections::HashMap; 

#[derive(RustcDecodable, RustcEncodable)] 
struct Person { 
    firstname: String, 
    lastname: String, 
} 

fn main() { 
    let mut server = Nickel::new(); 

    server.get("/post", middleware! { |request, mut response| 

     let person: Person = Person { firstname: "firstName ".to_string(), lastname: "lastName".to_string()}; 

     let mut p: Vec<Person> = vec![]; 

     p.push(person); 

     let json_data = json::encode(&p).unwrap(); 
     let mut data_result = "{\"status\": 200, \"data\":".to_owned(); 
     data_result.push_str(&json_data.to_string()); 

     data_result.push_str("}"); 

     response.set(StatusCode::Ok); 
     response.set(MediaType::Json); 
     format!("{}", data_result) 
    }); 

    server.get("/json", middleware! { |_, response| 
     let mut data = HashMap::new(); 
     data.insert("name", "user"); 
     return response.render("app/views/temp.tpl", &data); 
     // template source 
     // 
     //{name: {{name}}} 
     // 
    }); 

    server.listen("127.0.0.1:6767"); 
} 

而且/post返回該JSON:

{ "status": 200, "data": [{ "firstname": "firstName ", "lastname": "lastName" ]} 

/json回報這樣的文字:

"name: user" 

如何返回使用模板的JSON文件?

回答

0

它實際上返回

{name: user} 

所有你需要做的就是添加response.set(MediaType::Json);像你已經在其它的處理器有

#[macro_use] 
extern crate nickel; 

use nickel::{Nickel, HttpRouter}; 
use nickel::mimes::MediaType; 
use std::collections::HashMap; 

fn main() { 
    let mut server = Nickel::new(); 

    server.get("/json", middleware! { |_, mut response| { 
     let mut data = HashMap::new(); 
     data.insert("name", "user"); 
     response.set(MediaType::Json); 
     return response.render("app/views/temp.tpl", &data); 
    }}); 

    server.listen("127.0.0.1:6767"); 
} 

現在,這可能不是一個理念。通過字符串連接創建結構化格式(CSV,JSON,XML等)往往會造成格式錯誤的文檔或不正確的數據轉義。