symfwebapi
Biblioteka kliencka dla Symfonia WebAPI w Rust.
Projekt stawia na publiczny kontrakt możliwie bliski oryginalnemu WebAPI:
kontrolery, modele i enumy zachowują układ WebAPI.Interface.*, a overloady są
odwzorowane przez selektory i jedną kanoniczną metodę operacji.
Cele
- wierne odwzorowanie kontrolerów, modeli i enumów Symfonia WebAPI;
- w pełni typowany klient async oparty o
reqwestiserde; - bezpieczne zarządzanie sesją z automatycznym odnowieniem po
401; - możliwość pracy zarówno na modelach, jak i na surowym JSON;
- dokumentacja API dostępna bezpośrednio w
rustdoc.
Moduły
symfwebapi::runtime- konfiguracja klienta, transport HTTP, sesja i błędy.symfwebapi::web_api- kontrolery, modele i enumy odwzorowujące WebAPI.symfwebapi- reexport najważniejszych typów runtime'u.
Status
Biblioteka udostępnia:
ClientConfigz builderem, timeoutami i obsługą sesji;ApiClient;- typed i raw response;
- automatyczne zarządzanie sesją i pojedynczy retry po
401; ApiErrorzRequestContext;- forward-compatible enumy;
- dokumentację API dostępną w
rustdoc.
Wersjonowanie crate'a używa konwencji MAJOR.MINOR.WWMM, gdzie:
MAJORoznacza breaking change w SDK,MINORoznacza kolejną iterację SDK dla tej samej wersji WebAPI,WWMMkoduje docelową wersję Symfonia WebAPI, np.26.20 -> 2620.
Szybki start
use enumOrderByType;
use IProductsController;
use ;
# async
Overloady
Overloady są odwzorowane przez selektory, dzięki czemu można zachować jedną nazwę operacji i jednocześnie uzależnić typ odpowiedzi od wejścia.
use ;
# async
Raw JSON / dane nieidealne
Jeśli potrzebujesz zejść do surowego payloadu JSON, możesz używać metod *Raw
na tych samych kontrolerach:
use enumOrderByType;
use IProductsController;
# async
Dla overloadów ten sam mechanizm działa przez GetRaw(selector):
use ;
# async
Walidacja lokalna
Licencja
Biblioteka jest udostępniana na licencji BSD-3-Clause. Szczegóły są w pliku
LICENSE.