DartVM服务器开发(第十九天)--jaguar_reflect使用Controller

上一篇文章中,我们学习了如何部署项目到云服务器中,相信大家都基本上能够学会如何去部署吧,毕竟比其它服务器都部署都简单,而且dart不需要什么tomcat的依赖,相信之前学tomcat部署的都会踩不少坑吧!好了,今天我们来学习一下如何利用jaguar_reflect使用Controller,摆脱所有接口都写在一个文件中,ok,我们开始吧!

1.引入包

我们要使用controller需要添加jaguar_reflect

dependencies:
  jaguar_reflect: ^2.2.0

然后执行pub get命令

pub get.png

导包

import 'package:jaguar_reflect/jaguar_reflect.dart';

2.使用Controller

上面的导包,我们可以先放一下,因为还没有用到,先说明一下,上面的那个包用于反射获取@Controller里面的所有路由,跟之前我们学过的一篇文章差不多,只是它把反射封装好了,我们直接用就可以了,下面我们还是使用jaguar包里面的另外一个东西,就是@Controller,如果不配合jaguar_reflect是不起作用的

import 'package:jaguar/jaguar.dart';

@Controller(path: '/api/user')
class UserController{

  @Post(path: '/login')
  login(Context ctx) async {
    Map form = await ctx.bodyAsUrlEncodedForm();
    String username=form['username'];
    String password=form['password'];
    print('$username , $password');
    return Response('登陆成功');
  }
  
  @Post(path: '/logout')
  logout(Context ctx) async {
    Map form=await ctx.bodyAsUrlEncodedForm();
    String token=form['token'];
    print('$token');
    return Response('退出成功');
  }
}

下面我们将该Controller托付给Jaguar

import 'package:jaguar/jaguar.dart';
import 'package:jaguar_reflect/jaguar_reflect.dart';
main() {
  new Jaguar()
    ..log.onRecord.listen(print)
    ..add( ReflectedController(UserController()).routes)
    ..serve(logRequests: true);
}

上面有一个ReflectedController(UserController()).routes,就是把UserController里面的接口反射出来,添加到routes列表里面,然后addJaguar()里面,ok,我们来启动一下服务器试试吧! 请求http://localhost:8080/api/user/login 登陆用户

ok.png

可以看到,我们是成功调用到接口的,我们再来试试另外的一个登出接口 请求http://localhost:8080/api/user/logout 登出用户

ok.png

可以看到,我们又成功的调用了请求

ok.png

控制台也打印了相关的数据

3. 其它

我们还可以处理下面的请求方式

import 'package:jaguar/jaguar.dart';


@Controller(path: '/api/user')
class UserController{

  @Post(path: '/login')
  login(Context ctx) async {
    Map form = await ctx.bodyAsUrlEncodedForm();
    String username=form['username'];
    String password=form['password'];
    print('$username , $password');
    return Response('登陆成功');
  }

  @Post(path: '/logout')
  logout(Context ctx) async {
    Map form=await ctx.bodyAsUrlEncodedForm();
    String token=form['token'];
    print('$token');
    return Response('退出成功');
  }

  @Delete(path: '/delete')
  delect(Context ctx) async{
    Map form=await ctx.bodyAsUrlEncodedForm();
    String token=form['token'];
    print('$token');
    return Response('删除成功');
  }

  @Put(path: '/add')
  add(Context ctx) async{
    Map form = await ctx.bodyAsUrlEncodedForm();
    String username=form['username'];
    String password=form['password'];
    print('$username , $password');
    return Response('添加成功');
  }
}

ok,我们今天的学习就到这里了

  • 课后作业,结合Postgresqltoken进行用户的增删查改!

我们明天见!

如果想继续学习DartVM服务器开发,请关注我,学习更多骚操作!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java帮帮-微信公众号-技术文章全总结

Web-第十三天 基础加强-JDBC高级开发事务【悟空教程】

insert into account values (null,'jack',10000);

882
来自专栏玄魂工作室

Hacker基础之Linux篇:基础Linux命令十六

今天我们来学习几个小知识,不一定是Linux的命令,都是用于查看Linux的系统信息的

1703
来自专栏程序员互动联盟

linux设备驱动第四篇:linux驱动调试方法

上一篇我们大概聊了如何写一个简单的字符设备驱动,我们不是神,写代码肯定会出现问题,我们需要在编写代码的过程中不断调试。在普通的c应用程序中,我们经常使用prin...

54015
来自专栏芋道源码1024

分布式消息队列 RocketMQ源码解析:事务消息

本文主要基于 RocketMQ 4.0.x 正式版 1. 概述 2. 事务消息发送 2.1 Producer 发送事务消息 2.2 Broker 处理结束事务请...

5556
来自专栏JAVA同学会

Mybatis Generator 使用com.mysql.cj.jdbc.Driver遇到的问题

Mybatis Generator 使用com.mysql.cj.jdbc.Driver遇到的问题

1771
来自专栏java工会

推荐几个自己写的Java后端相关的范例项目

2605
来自专栏代码拾遗

SpringMVC 教程 - 异步请求

在Servlet容器中启动异步支持之后,controller的方法可以通过DeferredResult包装返回值来支持异步处理。例如:

2333
来自专栏轻扬小栈

ubuntu debian 百度网盘的Python客户端 bypy

9614
来自专栏aoho求索

Spring Cloud OpenFeign集成Protocol Buffer

在之前的文章中,我们介绍过基于Spring Cloud微服务架构,其中,微服务实例之间的交互方式一般为RESTful HTTP请求或RPC调用。Spring C...

1962
来自专栏乐沙弥的世界

Linux 6 下编译安装 PHP 5.6

2282

扫码关注云+社区

领取腾讯云代金券