美文网首页DartVM服务器开发
DartVM服务器开发(第十九天)--jaguar_reflec

DartVM服务器开发(第十九天)--jaguar_reflec

作者: rhyme_lph | 来源:发表于2018-09-08 21:32 被阅读14次

    上一篇文章中,我们学习了如何部署项目到云服务器中,相信大家都基本上能够学会如何去部署吧,毕竟比其它服务器都部署都简单,而且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服务器开发,请关注我,学习更多骚操作!

    相关文章

      网友评论

        本文标题:DartVM服务器开发(第十九天)--jaguar_reflec

        本文链接:https://www.haomeiwen.com/subject/gmylgftx.html