当我尝试使用多个查询参数调用端点时获取 404
Getting 404 when i try to call endpoint with multiple query parameter
我是这样做的
curl http://localhost:9000/vehicle?time=10:10:10&x=2&y=2
路由器中的路由定义为
override def routes: Routes = {
case GET(p"/" ? q"time=$time" & q"x=${int(x)}" & q"y=${int(y)}") =>
controller.getVehicle(time, x, y)
case GET(p"/"? q"stop_id=${stopId}") =>
controller.getVehicle(stopId)
case GET(p"/delay/"?q"line_id=${lineId}") =>
controller.getDelay(lineId)
}
路由文件看起来像
GET /vehicle transport.TransportController.getVehicle(time: String, x: Int, y: Int)
-> /v1/posts v1.post.PostRouter
-> /vehicle transport.TransportRouter
-> /vehicle/delay transport.TransportRouter
使用动态路由 SIRD
它给了我
[调试] a.ErrorHandler - onClientError: statusCode = 404, uri = /vehicle?time=10:10:10, message =
和静态
GET /vehicle transport.TransportController.getVehicle(time: String, x: Int, y: Int)
我明白了
[调试] a.ErrorHandler - onClientError: statusCode = 400, uri = /vehicle?time=10:10:10, message = Missing parameter: x
哪里出错了?为什么它不选择剩余的参数?
不是你的代码问题,是你的curl命令问题。符号的处理方式不同,在您的情况下不作为查询参数。尝试在 url:
周围添加引号
curl "http://localhost:9000/vehicle?time=10:10:10&x=2&y=2"
我是这样做的
curl http://localhost:9000/vehicle?time=10:10:10&x=2&y=2
路由器中的路由定义为
override def routes: Routes = {
case GET(p"/" ? q"time=$time" & q"x=${int(x)}" & q"y=${int(y)}") =>
controller.getVehicle(time, x, y)
case GET(p"/"? q"stop_id=${stopId}") =>
controller.getVehicle(stopId)
case GET(p"/delay/"?q"line_id=${lineId}") =>
controller.getDelay(lineId)
}
路由文件看起来像
GET /vehicle transport.TransportController.getVehicle(time: String, x: Int, y: Int)
-> /v1/posts v1.post.PostRouter
-> /vehicle transport.TransportRouter
-> /vehicle/delay transport.TransportRouter
使用动态路由 SIRD 它给了我 [调试] a.ErrorHandler - onClientError: statusCode = 404, uri = /vehicle?time=10:10:10, message =
和静态
GET /vehicle transport.TransportController.getVehicle(time: String, x: Int, y: Int)
我明白了 [调试] a.ErrorHandler - onClientError: statusCode = 400, uri = /vehicle?time=10:10:10, message = Missing parameter: x
哪里出错了?为什么它不选择剩余的参数?
不是你的代码问题,是你的curl命令问题。符号的处理方式不同,在您的情况下不作为查询参数。尝试在 url:
周围添加引号curl "http://localhost:9000/vehicle?time=10:10:10&x=2&y=2"