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);