4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

axumでクエリパラメータから配列を受け取るには

Posted at

axumでVec<String>を受け取ろうと思ったらうまくいかなかったので対処法メモ

対処法

axum_extra::extract::Queryを使うと受け取れます

サンプル

以下のようなGET関数に?values=value1&values=value2のようなクエリパラメータを付与して実行した場合、クエリパラメータからうまくvaluesを受け取れませんでした

use axum::extract::Query;

async fn Hello(Query(params): Query<Payload>) -> Result<Response, StatusCode> {
    ~~~
}

struct Payload {
    values: Vec<String>
}

調べるとaxum標準のQueryはパーサーが対応してない様子、、
https://github.com/tokio-rs/axum/discussions/1719

代わりにaxum_extraが使用できるそうです
serde_qsも使用可能(こっちはa[]のような配列記載にも対応している)なようなので、用途や好みで使い分けるとよさそうですね🥇

修正版は以下。簡単ですね❗

+ axum_extra::extract::Query;

async fn Hello(Query(params): Query<Payload>) -> Result<Response, StatusCode> {
    ~~~
}

struct Payload {
    values: Vec<String>
}
4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?