用Dart搭建HTTP服务器(3)

来源:互联网 发布:怎样成为淘宝主播 编辑:程序博客网 时间:2024/05/23 23:23

基于URL的请求模式

为了不搞复杂,就简单演示一下
先把需要用到的route包分享出来http://pan.baidu.com/s/1hq1rxI0

import 'dart:io';import 'package:route/server.dart';import 'package:route/url_pattern.dart';//所有模式,例如“/posts”final postsUrl = new UrlPattern(r'/posts\/?');//单一模式,例如“/post/24”final postUrl = new UrlPattern(r'/post/(\d+)\/?');//处理回调所有模式servePosts(req) {  req.response.write('All blog posts');  req.response.close();}//处理回调单一模式servePost(req) {  //解析URL路径或路径+片段  var postId = postUrl.parse(req.uri.path)[0];  req.response.write('Blog post $postId');  req.response.close();}//处理回调非法URLserveNotFound(req) {  req.response.statusCode = HttpStatus.NOT_FOUND;  req.response.write('Not found');  req.response.close();}main(List<String> arguments) {  HttpServer.bind(InternetAddress.LOOPBACK_IP_V4, 8089).then((server) {    var router = new Router(server)      //匹配请求的URL与方法,调用对应的处理方法      ..serve(postsUrl, method: 'GET').listen(servePosts)      ..serve(postUrl, method: 'GET').listen(servePost)      //如果都无法匹配,调用对应的处理方法      ..defaultStream.listen(serveNotFound);  });}

运行代码,先试试直接访问
这里写图片描述
因为URL无法匹配,所以直接调用了非法URL的处理方法
这里写图片描述
接着再用合法URL访问,先是所有模式/posts
这里写图片描述
然后再是单一模式/post/数字
这里写图片描述
它们分别对应
这里写图片描述
这就是基于URL的访问模式了

0 0
原创粉丝点击