Dart-Aqueduct框架开发(二)

上一篇

声明:本文首发于微信订阅号:Dart客栈,微信后台回复05162获取本篇源码
文章为原创,如需转载请注明出处,并告知作者,谢谢!

1.简介

上篇文章中,我们学习了Aqueduct这个Dart服务器框架的核心概念和如何搭建环境,启动项目,今天我们来学习以下Aqueduct项目的整体结构项目配置如何编写我们的api接口

2.项目结构

  • 配置编译工具
    我们一般以IDEA编程工具打开项目,在打开之前,我们需要添加Dart开发插件,打开IDEA,然后选择configure,找到Plugins
    image.png

    在弹出的界面中输入dart即可找到插件,然后就是安装了,我这里已经安装了,小伙伴可以点击之后等待一段时间,重启即可
    image.png

    然后我们可以选择Open,选中上一节中创建的Aqueduct项目,打开之后可以先看看,当点击一个dart文件时,会出现下面的一个提示,我们选中Enable Dart support即可
    image.png
  • 各文件介绍


    image.png
 各文件介绍
-| demo
-| .dart_tool 自动生成的文件
-| .idea 编译工具自动生成
-| bin
  -| main.dart 程序入口
-| lib
  -| channel.dart 通道
  -| demo.dart 用于导包
-| test 编写测试用例
-| .gitignore git忽略文件用
-| .packages 运行pub get 会自动生成
-| .travis.yml 持续集成相关
-| analysis_options.yaml 静态分析相关
-| config.src.yaml 开发环境下的配置
-| config.yaml 正式环境下的配置
-| pubspec.lock 运行pub get 会自动生成
-| pubspec.yaml 程序的描述及依赖的插件包声明
-| README.md  Aqueduct的简单使用介绍

3.内容介绍

上述的文件看起来比较多,但我们只需要关注几个文件即可,那就是

  • bin/main.dart
import 'package:demo/demo.dart';

Future main() async {
  final app = Application<DemoChannel>()
      ..options.configurationFilePath = "config.yaml"//载入配置文件
      ..options.port = 8888;//端口号

  final count = Platform.numberOfProcessors ~/ 2;//启动的isolate数量
  await app.start(numberOfInstances: count > 0 ? count : 1);//应用启动

  print("Application started on port: ${app.options.port}.");
  print("Use Ctrl-C (SIGINT) to stop running the application.");
}
  • lib/channel.dart
import 'demo.dart';

class DemoChannel extends ApplicationChannel {
  @override
  Future prepare() async {//执行初始化任务的方法
    logger.onRecord.listen((rec) => print("$rec ${rec.error ?? ""} ${rec.stackTrace ?? ""}"));//打印日志
  }
  @override
  Controller get entryPoint {//定义路由、请求链接等,在启动期间调用
    
    final router = Router();//路由对象
    router
      .route("/example") //声明一个路由,即请求地址,例如:http://127.0.0.1/example
      .linkFunction((request) async {//如果有用户请求,给他返回内容
        return Response.ok({"key": "value"});//ok即200的状态码,Response内封装了很多开箱即用的方法
      });

    return router;
  }
}
  • config.yaml
可以在此以yaml的格式声明环境,例如:数据库请求端口,账号,密码等
  • pubspec.yaml
name: demo #应用程序名
description: An empty Aqueduct application. #应用程序介绍
version: 0.0.1 #应用程序版本
author: rhyme_lph <rhymelph@gmail.com> #应用程序作者

# Dart sdk适用的版本范围
environment:
  sdk: ">=2.0.0 <3.0.0"

# 依赖包,无论在哪个环境都用到
dependencies:
  aqueduct: ^3.0.0

# 只在开发环境下的依赖包
dev_dependencies:
  test: ^1.0.0
  aqueduct_test: ^1.0.0

4. 编写自己的接口

到这里,我们已经大致的了解了项目的结构,现在我们可以编写Aqueduct的第一个接口。
lib/channel.dart下添加

class DemoChannel extends ApplicationChannel {
  @override
  Controller get entryPoint {
//new
    router.route('/hello')
        .linkFunction((request) async {
      return Response.ok({'data': 'Hello World'});
    });
    return router;
  }
//new 
}

现在我们可以输入aqueduct serve启动服务器,然后访问http://localhost:8888/hello即可

image.png

image.png

如果你跟我一样,👏恭喜你,成功的编写了第一个Aqueduct接口,今天的学习就到这里了,希望帮忙转发,让更多的小伙伴学习到这个语言和框架
下一篇

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342

推荐阅读更多精彩内容

  • 上一篇 声明:本文首发于微信订阅号:Dart客栈,微信后台回复05163获取本篇源码文章为原创,如需转载请注明出处...
    rhyme_lph阅读 3,954评论 18 4
  • 声明:本文首发于微信订阅号:Dart客栈文章为原创,如需转载请注明出处,并告知作者,谢谢! 1.介绍 Aquedu...
    rhyme_lph阅读 6,505评论 0 16
  • 上午批改五班的各大洲大洋位置简图,改了近二十份作业,没有一个同学能得A的,因为都出现知识性错误,包括好学...
    蕴阳_渡己成长阅读 351评论 1 2
  • 现在老公和儿子都已进入了梦乡,今天晚上的晚安绘本是<晚安,梦的精灵> 画面非常美的一本书,配着优美的诗,讲述梦的精...
    杨欐阅读 385评论 0 2
  • 今天是周六,寒风中,我们瑟瑟发抖,但依然挺立。为了贫困地区孩子们能穿上温暖的衣服,为了他们能更好地学习,我们穿...
    跳跳糖11阅读 178评论 0 0