18个版本 (10个重大变更)
0.11.0 | 2023年9月19日 |
---|---|
0.10.0 | 2023年7月20日 |
0.9.0 | 2023年4月12日 |
0.8.1 | 2022年11月23日 |
0.1.0 | 2021年7月23日 |
#125 in WebAssembly
每月146次下载
用于 dtbh_interface
23KB
433 代码行
wasmCloud HTTP客户端接口
这是具有合约ID wasmcloud:httpclient
的接口定义。
使用此接口的演员可以发送HTTP请求并接收HTTP响应以进行处理。由于这只是接口,而不是实际提供者,您需要查看各个提供者实现的文档,以获取该提供者支持的链接定义值的列表。
能力提供者实现
以下是为 wasmcloud:httpclient
合约实现的列表。如果您有社区/开源版本,请随时提交PR添加您的实现。
名称 | 供应商 | 描述 |
---|---|---|
HTTPClient | wasmCloud | wasmCloud的HTTP客户端提供者实现 |
示例用法
🦀 Rust
检索随机XKCD漫画并将响应格式化为HTML页面
use serde::Deserialize;
use wasmbus_rpc::actor::prelude::*;
use wasmcloud_interface_httpclient::*;
use wasmcloud_interface_httpserver::HttpResponse;
use wasmcloud_interface_numbergen::random_in_range;
const MAX_COMIC_ID: u32 = 2500;
#[derive(Deserialize)]
struct XkcdMetadata {
title: String,
img: String,
}
async fn get_comic(ctx: &Context) -> RpcResult<HttpResponse> {
let comic_num = random_in_range(1, MAX_COMIC_ID).await?;
// make a request to get the json metadata
let url = format!("https://xkcd.com/{}/info.0.json", comic_num);
let client = HttpClientSender::new();
let resp = client.request(ctx, &HttpRequest::get(&url)).await?;
if !(200..300).contains(&resp.status_code) {
return Err(format!("HTTP Request error {}", resp.status_code.to_string(),).into());
}
let comic = serde_json::from_slice::<XkcdMetadata>(&resp.body)
.map_err(|_| "Error deserializing response body")?;
let html = format!(
r#"<!DOCTYPE html>
<html>
<head>
<title>Your XKCD random comic</title>
</head>
<body>
<h1>{}</h1>
<img src="{}"/>
</body>
</html>
"#,
&comic.title, &comic.img
);
let resp = HttpResponse {
body: html.into_bytes(),
..Default::default()
};
Ok(resp)
}
🐭 Golang
获取IP地址
func GetIpAddress(ctx *actor.Context) ([]byte, error) {
client := httpclient.NewProviderHttpClient()
resp, err := client.Request(ctx, httpclient.HttpRequest{
Method: "GET",
Url: "https://ifconfig.io/ip",
// Body can not be blank due to a bug
Body: []byte("a"),
})
if err != nil {
return nil, err
}
return resp.Body, nil
}
依赖关系
~12–31MB
~504K SLoC