上一篇文章中,我們學(xué)習(xí)了如何部署項(xiàng)目到云服務(wù)器中屯烦,相信大家都基本上能夠?qū)W會(huì)如何去部署吧坷随,畢竟比其它服務(wù)器都部署都簡(jiǎn)單,而且dart不需要什么tomcat的依賴驻龟,相信之前學(xué)tomcat部署的都會(huì)踩不少坑吧温眉!好了,今天我們來(lái)學(xué)習(xí)一下如何利用jaguar_reflect使用Controller翁狐,擺脫所有接口都寫(xiě)在一個(gè)文件中类溢,ok,我們開(kāi)始吧露懒!
1.引入包
我們要使用controller需要添加
jaguar_reflect
包
dependencies:
jaguar_reflect: ^2.2.0
然后執(zhí)行pub get
命令
導(dǎo)包
import 'package:jaguar_reflect/jaguar_reflect.dart';
2.使用Controller
上面的導(dǎo)包闯冷,我們可以先放一下砂心,因?yàn)檫€沒(méi)有用到,先說(shuō)明一下蛇耀,上面的那個(gè)包用于反射獲取
@Controller
里面的所有路由辩诞,跟之前我們學(xué)過(guò)的一篇文章差不多,只是它把反射封裝好了纺涤,我們直接用就可以了译暂,下面我們還是使用jaguar包里面的另外一個(gè)東西,就是@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);
}
上面有一個(gè)ReflectedController(UserController()).routes
,就是把UserController
里面的接口反射出來(lái)秧秉,添加到routes
列表里面,然后add
到Jaguar()
里面衰抑,ok象迎,我們來(lái)啟動(dòng)一下服務(wù)器試試吧!
請(qǐng)求http://localhost:8080/api/user/login 登陸用戶
可以看到,我們是成功調(diào)用到接口的呛踊,我們?cè)賮?lái)試試另外的一個(gè)登出接口
請(qǐng)求http://localhost:8080/api/user/logout 登出用戶
可以看到砾淌,我們又成功的調(diào)用了請(qǐng)求
控制臺(tái)也打印了相關(guān)的數(shù)據(jù)
3. 其它
我們還可以處理下面的請(qǐng)求方式
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é)習(xí)就到這里了
- 課后作業(yè)谭网,結(jié)合
Postgresql
與token
進(jìn)行用戶的增刪查改!
我們明天見(jiàn)汪厨!
如果想繼續(xù)學(xué)習(xí)DartVM服務(wù)器開(kāi)發(fā),請(qǐng)關(guān)注我愉择,學(xué)習(xí)更多騷操作劫乱!