20 个版本
0.6.1 | 2024 年 5 月 22 日 |
---|---|
0.5.8 | 2024 年 1 月 2 日 |
0.5.7 | 2023 年 11 月 2 日 |
0.5.0 | 2023 年 7 月 11 日 |
0.1.4 | 2023 年 2 月 24 日 |
#81 个月HTTP 服务器
154 次每月下载
450KB
11K SLoC
htsget-actix
依赖于 htsget-rs 的本地实例框架代码,使用 Actix Web。
概述
此包用于运行 htsget-rs 的本地实例。它基于
- Actix Web 提供端点、路由和中间件。
- htsget-http 为 htsget-rs 特定的 HTTP 响应
用法
作为应用程序运行 htsget-rs
此包使用 htsget-config 进行配置。有关如何配置此包的详细信息,请参阅 htsget-config。
要运行此包的实例,请执行以下命令
cargo run -p htsget-actix
使用默认配置,这将启动一个在 127.0.01:8080
上的票务服务器和 127.0.01:8081
上的数据块服务器,数据可通过 data
目录访问。
要使用 S3Storage
,请使用 s3-storage
功能编译
cargo run -p htsget-actix --features s3-storage
这将启动一个使用名为 S3Storage
的存储桶的票务服务器,该存储桶的名称为 "data"
。
要使用 UrlStorage
,请使用 url-storage
功能进行编译。
有关文件结构的详细信息,请参阅 htsget-search。
使用 TLS
运行此 crate 时将启动两个服务器实例。票务服务器返回客户端必须获取的票务 URL 列表。还有数据块服务器,它响应票务中的 URL。默认情况下,数据块服务器在没有 TLS 的情况下运行。要使用 TLS 运行数据块服务器,需要 pem 格式的 X.509 证书。
出于开发和测试目的,可以使用自签名证书。例如,要生成自签名证书,请运行
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -sha256 -days 365 -nodes -subj '/CN=localhost'
不建议在生产环境中使用自签名证书,因为这被认为是不安全的。
示例请求
使用默认配置设置,此 crate 对引用 data
目录中的文件的查询做出响应。以下是一些使用 curl
的示例请求
- GET
curl '127.0.0.1:8080/variants/data/vcf/sample1-bcbio-cancer'
- POST
curl --header "Content-Type: application/json" -d '{}' '127.0.0.1:8080/variants/data/vcf/sample1-bcbio-cancer'
- 参数化 GET
curl '127.0.0.1:8080/variants/data/vcf/sample1-bcbio-cancer?format=VCF&class=header'
- 参数化 POST
curl --header "Content-Type: application/json" -d '{"format": "VCF", "regions": [{"referenceName": "chrM"}]}' '127.0.0.1:8080/variants/data/vcf/sample1-bcbio-cancer'
- 服务信息
curl '127.0.0.1:8080/variants/service-info'
作为库
不需要将此 crate 作为库进行交互,但是一些处理配置路由的函数在公共 API 中公开。
功能标志
此 crate 有以下功能
s3-storage
:用于启用S3Storage
功能。url-storage
:用于启用UrlStorage
功能。
基准测试
此 crate 的基准测试使用 Criterion.rs 编写,旨在比较此 crate 与 htsget Reference Server 的性能。有一组轻基准测试和一个重基准测试。可以通过执行以下操作执行轻基准测试
cargo bench -p htsget-actix -- LIGHT
要运行重基准测试,需要下载额外的 vcf 文件,并将其放置在 data/vcf
目录
curl ftp://ftp.1000genomes.ebi.ac.uk/vol1/ftp/data_collections/1000_genomes_project/release/20190312_biallelic_SNV_and_INDEL/ALL.chr14.shapeit2_integrated_snvindels_v2a_27022019.GRCh38.phased.vcf.gz > data/vcf/internationalgenomesample.vcf.gz
然后运行重基准测试
cargo bench -p htsget-actix -- HEAVY
许可证
此项目根据 MIT 许可证 许可。
依赖项
~40–60MB
~1M SLoC