上一篇文章中,我們學(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列表里面,然后add到Jaguar()里面,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é)合
Postgresql與token進行用戶的增刪查改!
我們明天見!
如果想繼續(xù)學(xué)習DartVM服務(wù)器開發(fā),請關(guān)注我,學(xué)習更多騷操作!