Flutter启动服务,JOSN数据处理

以前还真不知道Flutter可以做服务端使用,一直以为是客户端的使用。

这里介绍下Flutter自己做服务端,简单的数据获取:

服务端目录如下:

image.png

pubspec.yaml:

name: flutter_website_server
description: Flutter企业站实践

dependencies:
  http_server: ^0.9.8

F5键启动服务,生成launch.json文件,修改文件内容如下:

launch.json:

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [{
        "name": "Dart",
        "program": "main.dart",
        "request": "launch",
        "type": "dart"
    }]
}

main.dart:

import 'dart:convert';
import 'dart:io';
import 'data.dart';
import 'package:http_server/http_server.dart';

main() async {
  var requestServer = await HttpServer.bind('172.25.11.67', 8080);
  print('http服务启动起来');

  // 处理请求
  await for (HttpRequest request in requestServer) {
    // request.response
    //   ..write('request success...')
    //   ..close();
    handleMessage(request);
  }
}

void handleMessage(HttpRequest request) {
  try {
    if (request.method == 'GET') {
      handleGET(request);
    } else if (request.method == 'POST') {
      // TODO
      handleGET(request);
    }
  } catch (e) {
    print('捕获了一个异常:$e');
  }
}

void handleGET(HttpRequest request) {
  // 获取请求参数
  var action = request.uri.queryParameters['action'];
  if (action == 'getProducts') {
    print('获取产品数据。。。');
    request.response
      ..write(json.encode(products))
      ..close();
  }
  if (action == 'getNews') {
    print('获取新闻数据。。。');
    request.response
      ..write(json.encode(news))
      ..close();
  }
}

void handlePOST(HttpRequest request) {
  // 处理POST请求
}

data.dart:

// 产品数据
var products = {
  "items": [
    {"desc": "描述1", "imageUrl": "", "type": "新款", "name": "苹果笔记本"}
  ]
};

// 新闻数据
var news = {
  "items": [
    {"author": "作者", "title": "标题", "content": "新款"}
  ]
};

F5启动服务即可:


image.png

chorme浏览器输入链接即可展示内容。

推荐一个扩展程序:

JSONView

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容