On Github luizmineo / devfest_sp_2014
//tipos não são obrigatórios var resposta = 42; //mas podem ser usados quando desejado int resposta = 42;
class Pessoa {
String nome;
int idade;
String endereco;
Pessoa([this.nome, this.idade, this.endereco]);
}
var pessoa = new Pessoa("José", 35);
Future future = operacaoAssincrona();
future..then((resp) => print(resp))
..catchError((e) => print("erro: $e"));
import 'dart:io';
void main() {
HttpServer.bind('0.0.0.0', 8080).then((server) {
server.listen((HttpRequest request) {
request.response
..headers.contentType =
new ContentType("text", "plain", charset: "utf-8")
..write('Olá, mundo!')
..close();
});
});
}
import 'package:redstone/server.dart' as app;
@app.Route("/")
olaMundo() => "Olá, mundo!";
main() {
app.start();
}
//Ex.: http://localhost:8080/ola/luiz
@app.Route("/ola/:usuario")
olaUsuario(String usuario) => "Olá, $usuario";
//Ex.: http://localhost:8080/usuario?id=1234
@app.Route("/usuario")
buscaUsuario(@app.QueryParam("id") int id) {
...
};
//Suporte a JSON
@app.Route("/usuario", methods: const [app.POST])
salvaUsuario(@app.Body(app.JSON) Map json) {
...
};
//Suporte ao objeto Future
@app.Route("/usuario/:id")
Future<Map> buscaUsuario(int id) =>
database.find(id);
@app.Interceptor(r'/.*')
handleResponseHeader() {
app.chain.next(()
=> app.response.change(headers:
{"Access-Control-Allow-Origin": "*"}));
}
@app.ErrorHandler(404)
recursoNaoEncontrado() => app.redirect("/error/not_found.html");
@app.ErrorHandler(500)
erroInterno() {
//exceção gerada
print(app.chain.error);
}
@Group("/usuario")
class Usuario {
//Ex.: http://localhost:8080/usuario/buscar?n=luiz
@app.Route("/buscar")
buscar(@app.QueryParam("n") String nome) {
...
}
@app.Route("/salvar", methods: const [app.POST])
salvar(@app.Body(app.JSON) Map json) {
...
}
}
class Usuario {
@Field() String nome;
@Field() int idade;
}
//conteúdo da requisição é convertido
//de JSON para Usuario
@app.Route('/usuario', methods = const[app.POST])
salvaUsuario(@Decode() Usuario usuario) {
...
}
//Retorno da função é convertido para JSON
@app.Route("/usuarios")
@Encode()
Future<List<Usuario>> buscaUsuarios() =>
//busca documentos da coleção 'usuarios',
//e os converte para List<Usuario>
mongoDb.find("usuarios", Usuario);
//Retorno da função é convertido para JSON
@app.Route("/usuarios")
@Encode()
Future<List<Usuario>> buscaUsuarios() =>
//busca registros da tabela 'usuario',
//e os converte para List<Usuario>
postgreSql.query("select * from usuario",
Usuario);