Exemplo de como fazer uma requisição POST usando SHELF em Flutter
Aqui está um exemplo de como fazer uma requisição POST usando o pacote shelf
em Flutter e passando um objeto no corpo da requisição:
import 'dart:convert'; import 'package:shelf/shelf.dart' as shelf; import 'package:shelf/shelf_io.dart' as shelf_io; import 'package:shelf_proxy/shelf_proxy.dart'; void main() { final handler = const shelf.Pipeline() .addMiddleware(shelf.logRequests()) .addHandler(_handleRequest); shelf_io.serve(handler, 'localhost', 8080).then((server) { print('Servidor rodando em http://${server.address.host}:${server.port}'); }); } shelf.Response _handleRequest(shelf.Request request) { if (request.method == 'POST') { // Extrai o objeto do corpo da requisição final body = utf8.decode(request.read()); final jsonData = json.decode(body); final token = jsonData['token']; final email = jsonData['email']; final answer = jsonData['answer']; // Faça o processamento necessário com os dados recebidos // ... // Retorna uma resposta return shelf.Response.ok('Requisição POST recebida'); } // Retorna uma resposta padrão para outras requisições return shelf.Response.notFound('Recurso não encontrado'); }
Neste exemplo, estamos criando um servidor Shelf local que escuta as requisições na porta 8080. Quando uma requisição POST é feita para o servidor, extraímos o objeto JSON do corpo da requisição, acessamos suas propriedades (token
, email
e answer
) e realizamos o processamento necessário com esses dados. Por fim, retornamos uma resposta indicando que a requisição POST foi recebida.
Lembre-se de adicionar as dependências necessárias no arquivo pubspec.yaml
do seu projeto:
dependencies: shelf: ^1.4.1 shelf_proxy: ^1.0.4 shelf_io: ^1.1.4
Certifique-se de importar as bibliotecas corretamente:
import 'dart:convert'; import 'package:shelf/shelf.dart' as shelf; import 'package:shelf/shelf_io.dart' as shelf_io; import 'package:shelf_proxy/shelf_proxy.dart';
Esse é um exemplo básico, e você pode personalizá-lo de acordo com as suas necessidades. Lembre-se também de ajustar o URL e o processamento dos dados para o seu caso específico.
Aqui está um exemplo completo de como fazer uma requisição POST usando o pacote Shelf em Flutter:
- Primeiro, você precisará adicionar as dependências corretas ao seu arquivo
pubspec.yaml
. Certifique-se de ter as seguintes dependências:
dependencies: shelf: ^1.4.1 http_parser: ^4.0.2
- Em seguida, você pode criar um arquivo
main.dart
e adicionar o seguinte código:
import 'dart:convert'; import 'package:shelf/shelf.dart'; import 'package:shelf/shelf_io.dart' as shelf_io; void main() async { var server = await shelf_io.serve(handleRequest, 'localhost', 8080); server.autoCompress = true; print('Servindo em http://${server.address.host}:${server.port}'); } Response handleRequest(Request request) { if (request.method == 'POST') { // Decodifique o corpo da solicitação JSON return request.readAsString().then((body) { var requestBody = jsonDecode(body); // Acesse os dados da solicitação POST var username = requestBody['username']; var password = requestBody['password']; // Faça o processamento necessário com os dados // ... // Retorne uma resposta de sucesso return Response.ok('Requisição POST recebida. Username: $username, Password: $password'); }); } else { // Retorne uma resposta de método não permitido para outras solicitações return Response(405, body: 'Método não permitido'); } }
Este exemplo cria um servidor Shelf que escuta na porta 8080 em localhost
. Ele manipula solicitações POST e retorna uma resposta com os dados recebidos.
Certifique-se de substituir a lógica de processamento de dados e a resposta com o que você precisa para o seu caso específico.