DartVM服務(wù)器開發(fā)(第十九天)--jaguar_reflect使用Controller

上一篇文章中,我們學(xué)習了如何部署項目到云服務(wù)器中,相信大家都基本上能夠?qū)W會如何去部署吧,畢竟比其它服務(wù)器都部署都簡單,而且dart不需要什么tomcat的依賴,相信之前學(xué)tomcat部署的都會踩不少坑吧!好了,今天我們來學(xué)習一下如何利用jaguar_reflect使用Controller,擺脫所有接口都寫在一個文件中,ok,我們開始吧!

1.引入包

我們要使用controller需要添加jaguar_reflect

dependencies:
  jaguar_reflect: ^2.2.0

然后執(zhí)行pub get命令

pub get.png

導(dǎo)包

import 'package:jaguar_reflect/jaguar_reflect.dart';

2.使用Controller

上面的導(dǎo)包,我們可以先放一下,因為還沒有用到,先說明一下,上面的那個包用于反射獲取@Controller里面的所有路由,跟之前我們學(xué)過的一篇文章差不多,只是它把反射封裝好了,我們直接用就可以了,下面我們還是使用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,我們來啟動一下服務(wù)器試試吧!
請求http://localhost:8080/api/user/login 登陸用戶

ok.png

可以看到,我們是成功調(diào)用到接口的,我們再來試試另外的一個登出接口
請求http://localhost:8080/api/user/logout 登出用戶
ok.png

可以看到,我們又成功的調(diào)用了請求
ok.png

控制臺也打印了相關(guān)的數(shù)據(jù)

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,我們今天的學(xué)習就到這里了

  • 課后作業(yè),結(jié)合Postgresqltoken進行用戶的增刪查改!

我們明天見!

如果想繼續(xù)學(xué)習DartVM服務(wù)器開發(fā),請關(guān)注我,學(xué)習更多騷操作!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,568評論 19 139
  • 目錄 上一篇:DartVM服務(wù)器開發(fā)(第五天)--日志工具 在之前的文章中,我們學(xué)習了如何建立一個DartVM服務(wù)...
    rhyme_lph閱讀 4,848評論 12 17
  • 和地域無關(guān),這種現(xiàn)象在北京地鐵也很常見。雖不美觀,但也無關(guān)教養(yǎng)。因為但凡有凳子的話,誰愿意蹲著呢? 我們常說的教養(yǎng)...
    鏡花生閱讀 490評論 0 1
  • 晚風至,入夜雨無聲。 獨坐琴臺,愁緒幾載。 奈何韶光易逝。 煙花繁,長街寂空冷。 人去樓空,珠淚幾簾。 道是梨花依舊。
    時光梳閱讀 246評論 0 2
  • 元旦,看到大家都在做開年第一天覺得有意義的事情。當然我也不例外,就和愛人一起去新鄭始祖山上香,爬山。意在今年能夠堅...
    玉葉金枝閱讀 561評論 0 0

友情鏈接更多精彩內(nèi)容