Dart: Criando nosso primeiro Backend

Marcos Barbosa
3 min readJun 7, 2021

--

Vamos juntos criar um backend simples com dart?

Hoje, com o Flutter, o dart já virá junto, mas caso prefira, você pode baixar a parte.

Photo by Anastase Maragos on Unsplash

Vamos iniciar criando nosso projeto:

dart create server

Se você quiser usar um template mais completo (com uma melhor estrutura de pastas e já com testes), use este comando:

dart create -t console-full full_server

Feito isso você terá um projeto parecido com esse:

O código nosso deve ficar dentro da main, pois será a parte apontada para a execução deste.

Vamos agora adicionar a lib shelf:

No caso, usaremos essa versão:

shelf: ^1.1.4

Usaremos agora o exemplo do próprio shelf:

import ‘package:shelf/shelf.dart’;
import ‘package:shelf/shelf_io.dart’ as shelf_io;
void main() async {
var handler =
const Pipeline().addMiddleware(logRequests()).addHandler(_echoRequest);
var server = await shelf_io.serve(handler, ‘localhost’, 8080);// Enable content compression
server.autoCompress = true;
print(‘Serving at http://${server.address.host}:${server.port}');
}
Response _echoRequest(Request request) =>
Response.ok(‘Request for “${request.url}”’);

Para rodar, use: dart run bin/server.dart

Agora, entrando no navegador: http://localhost:8080/teste

Pronto, aplicação criada.

Bonus: Testes Unitários

Vamos adicionar a lib, na maioria das vezes já vem incluída, mas como criamos um exemplo simples teremos que fazer a importação.

Vamos usar essa versão:

test: ^1.17.5

Vamos criar um arquivo: server_test.dart, dentro da pasta test.

Agora vamos escrever um teste básico.

import 'package:test/test.dart';void main() {   test('teste basico', () {      var nome = 'joao';      expect(nome, 'joao');   });}

Agora, rode o seguinte comando no terminal:

flutter test

A saída deve ser algo assim:

Agora vamos testar um erro, para isso, mude a variável nome para outro valor.

var nome = 1;

Por hoje é isso, espero que tenham gostado. :)

--

--

Marcos Barbosa

Aloha, sou programador Python, arranho em aplicações mobile e escrevo às vezes.