-4

以下两个“hello world”示例均成功构建,但只有第一个结果显示为“Hello World”的页面;第二个给我一个关于找不到页面的错误。两者的 Cargo.toml 文件是相同的。我正在访问 IP 127.0.0.1:3030

我尝试使用 curl 访问第二个,但它什么也没返回并返回到提示符。我第一个成功使用的浏览器是 Microsoft Edge 84。

为什么第二个不起作用?

第一

#![deny(warnings)]
use warp::Filter;

#[tokio::main]
async fn main() {
    // Match any request and return hello world!
    let routes = warp::any().map(|| "Hello, World!");

    warp::serve(routes).run(([127, 0, 0, 1], 3030)).await;

第二个

use warp::Filter;

#[tokio::main]
async fn main() {
    // GET /hello/warp => 200 OK with body "Hello, warp!"
    let hello = warp::path!("hello" / String)
        .map(|name| format!("Hello, {}!", name));

    warp::serve(hello)
        .run(([127, 0, 0, 1], 3030))
        .await;
}

货运.toml

[package]
name = "warptest"
version = "0.1.0"
authors = ["user"]
edition = "2018"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html


[dependencies]

tokio = { version = "0.2", features = ["full"] }
warp = "0.2"
4

1 回答 1

2

第二个示例响应路径上的请求/hello/string-argument。它未配置为响应根路径/

% curl -vvvv 'http://0.0.0.0:3030/'
*   Trying 0.0.0.0...
* TCP_NODELAY set
* Connected to 0.0.0.0 (127.0.0.1) port 3030 (#0)
> GET / HTTP/1.1
> Host: 0.0.0.0:3030
> User-Agent: curl/7.64.1
> Accept: */*
>
< HTTP/1.1 404 Not Found
< content-length: 0
< date: Mon, 24 Aug 2020 19:53:06 GMT
<
* Connection #0 to host 0.0.0.0 left intact
* Closing connection 0
% curl -vvvv 'http://0.0.0.0:3030/hello/world'
*   Trying 0.0.0.0...
* TCP_NODELAY set
* Connected to 0.0.0.0 (127.0.0.1) port 3030 (#0)
> GET /hello/world HTTP/1.1
> Host: 0.0.0.0:3030
> User-Agent: curl/7.64.1
> Accept: */*
>
< HTTP/1.1 200 OK
< content-type: text/plain; charset=utf-8
< content-length: 13
< date: Mon, 24 Aug 2020 19:54:01 GMT
<
* Connection #0 to host 0.0.0.0 left intact
Hello, world!* Closing connection 0
于 2020-08-24T19:54:25.143 回答