我不是100%确定如何创建我可以拨打电话的Restful Dart API,但我想尝试一下。我写了以下代码:
import "package:rpc/rpc.dart";
import "dart:io";
final ApiServer _apiServer = new ApiServer(prettyPrint:true);
main() async{
_apiServer.addApi(new TestServer());
HttpServer server = await HttpServer.bind(InternetAddress.ANY_IP_V4, 8088);
server.listen(_apiServer.httpRequestHandler);
print('Server listening on http://${server.address.host}:'
'${server.port}');
}
@ApiClass(name:'test_server', version: 'v1', description: 'This is a test server api to ping for some quick sample data.')
class TestServer {
@ApiMethod(method:'GET', path: 'users')
List<User> getUsers(){
List<User> users = new List<User>();
return users;
}
@ApiMethod(method: 'GET', path: 'users/{id}')
User getUser(int id){
User u;
///TODO: Guts of User.
u = new User(id, "f_test_$id", "f_test_$id");
return u;
}
@ApiMethod(method:'POST', path: 'users/user/{id}/add')
User postUser(int id, UserData usr){
User u;
///TODO: Post the user.
u = User.fromUsrData(usr);
return u;
}
}
这是一个非常简单的小型实际上并没有做任何事情。
当我运行dart文件时,它会说:
Observatory listening on http://127.0.0.1:64969
Server listening on http://0.0.0.0:8088
所以它让我相信我应该能够在localhost中ping服务器。我在浏览器中拨打http://localhost:8088/test_server/v1/users
它说:{"error":{"code":400,"message":"Invalid request, missing API name and/or version: http://localhost:8088/."}}
让我感到困惑。
我在定义中某处做错了什么或者如何访问localhost API?
编辑似乎当我转到该网址时,它处于永久挂起状态。它除此之外什么都不做。
答案 0 :(得分:0)
在深入了解该问题后,更改名称等等,似乎我的服务器出现了一些问题,所以我需要结束Dart执行,然后重新启动服务器。
尝试再次转到该链接时:http://localhost:8088/test/v1/users 它完全按照预期工作。