如何使用Nickel模板返回JSON文件?
我正在尝试使用Nickel模板返回一个JSON文件。我找到了一些返回JSON响应的API示例代码,并对其进行了修改:如何使用Nickel模板返回JSON文件?,json,rust,nickel,Json,Rust,Nickel,我正在尝试使用Nickel模板返回一个JSON文件。我找到了一些返回JSON响应的API示例代码,并对其进行了修改: 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; us
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");
}
/json
返回以下文本:
"name: user"
如何使用模板返回JSON文件?它实际返回
{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等)通常会遇到格式错误的文档或转义数据不正确的问题
#[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");
}