poem-queryext

Crates.iopoem-queryext
lib.rspoem-queryext
version0.1.2
created_at2025-02-27 03:26:12.720047+00
updated_at2025-03-15 09:05:02.659001+00
descriptionAuto deserialize struct from query string
homepage
repositoryhttps://github.com/cxandlj/poem-queryext.git
max_upload_size
id1571212
size31,949
cx (cxandlj)

documentation

README

Implement poem FromRequest to deserialize struct from query string.

struct poem_queryext::QueryExt is deprecated,because it will cause a memory leak, use poem_queryext::QueryExtN instead.

Example

use poem_queryext::QueryExtN;
use poem_openapi::{payload::PlainText, OpenApi};
use serde::Deserialize;

struct Api;

#[OpenApi]
impl Api {
  //test url: /test?name=cx  
  //test url: /test?name=cx&age=18&hobby[0]=music&hobby[1]=game  
  #[oai(path = "/test", method = "get")]
  async fn test(&self, QueryExtN(query): QueryExtN<QueryObj>) -> PlainText<String> {
       PlainText(format!(
           "name:{},age:{},hobby:{}",
           query.name,
           query.age.unwrap_or_default(),
           query.hobby.unwrap_or_default().join(",")
       ))
   }
}

#[derive(Deserialize)]
#[serde(rename_all = "camelCase")]
struct QueryObj{
    name:String,//if want use &str,use Arc<str> or Cow<'_,str>
    age:Option<i8>,//Non mandatory fields  use Option<T>
    hobby:Option<Vec<String>>//Non mandatory fields  use Option<T>
}

Commit count: 0

cargo fmt