تحقق من الجهات الراعية لدينا في المستندات
إذا كنت ترغب في دعم العمل الذي نقوم به، فيرجى التفكير في أن تصبح راعيًا عبر Polar.sh (المفضل) أو GitHub أو Open Collective.
أيضًا، حصريًا مع Polar، يمكنك المشاركة في الرعاية القائمة على التعهدات.
أثناء دعم معالجات التوجيه المستندة إلى الوظيفة، يدعم Litestar أيضًا ويروج لـ python OOP باستخدام وحدات التحكم القائمة على الفئة:
from typing import List , Optional
from datetime import datetime
from litestar import Controller , get , post , put , patch , delete
from litestar . dto import DTOData
from pydantic import UUID4
from my_app . models import User , PartialUserDTO
class UserController ( Controller ):
path = "/users"
@ post ()
async def create_user ( self , data : User ) -> User : ...
@ get ()
async def list_users ( self ) -> List [ User ]: ...
@ get ( path = "/{date:int}" )
async def list_new_users ( self , date : datetime ) -> List [ User ]: ...
@ patch ( path = "/{user_id:uuid}" , dto = PartialUserDTO )
async def partial_update_user (
self , user_id : UUID4 , data : DTOData [ PartialUserDTO ]
) -> User : ...
@ put ( path = "/{user_id:uuid}" )
async def update_user ( self , user_id : UUID4 , data : User ) -> User : ...
@ get ( path = "/{user_name:str}" )
async def get_user_by_name ( self , user_name : str ) -> Optional [ User ]: ...
@ get ( path = "/{user_id:uuid}" )
async def get_user ( self , user_id : UUID4 ) -> User : ...
@ delete ( path = "/{user_id:uuid}" )
async def delete_user ( self , user_id : UUID4 ) -> None : ...
يتم كتابة Litestar بدقة، ويفرض الكتابة. على سبيل المثال، إذا نسيت كتابة قيمة إرجاع لمعالج المسار، فسيتم ظهور استثناء. والسبب في ذلك هو أن Litestar يستخدم كتابة البيانات لإنشاء مواصفات OpenAPI، وكذلك للتحقق من صحة البيانات وتحليلها. وبالتالي، الكتابة ضرورية للإطار.
علاوة على ذلك، يسمح Litestar بتوسيع دعمه باستخدام المكونات الإضافية.
يحتوي Litestar على نظام مكون إضافي يسمح للمستخدم بتوسيع التسلسل/إلغاء التسلسل وإنشاء OpenAPI وميزات أخرى.
يأتي مع مكون إضافي مدمج لـ SQL Alchemy، والذي يسمح للمستخدم باستخدام فئات SQLAlchemy التعريفية "محليًا"، أي كمعلمات كتابة سيتم تسلسلها/إلغاء تسلسلها وإعادتها كقيم من معالجات المسار.
يدعم Litestar أيضًا الإنشاء البرمجي لـ DTOs باستخدام فئة DTOFactory
، والتي تدعم أيضًا استخدام المكونات الإضافية.
لدى Litestar منطق مخصص لإنشاء مخطط OpenAPI 3.1.0، ويتضمن إنشاء اختياري للأمثلة باستخدام مكتبة polyfactory
.
يقدم Litestar الوثائق من مخطط OpenAPI الذي تم إنشاؤه مع:
كل هذه متاحة وممكنة بشكل افتراضي.
لدى Litestar نظام DI بسيط ولكنه قوي مستوحى من pytest. يمكنك تحديد التبعيات المسماة - المزامنة أو غير المتزامنة - على مستويات مختلفة من التطبيق، ثم استخدامها بشكل انتقائي أو الكتابة فوقها.
from litestar import Litestar , get
from litestar . di import Provide
async def my_dependency () -> str : ...
@ get ( "/" )
async def index ( injected : str ) -> str :
return injected
app = Litestar ([ index ], dependencies = { "injected" : Provide ( my_dependency )})
يدعم Litestar برامج ASGI الوسيطة النموذجية ويأتي مزودًا ببرامج وسيطة للتعامل مع أشياء مثل
لدى Litestar آلية ترخيص تسمى guards
، والتي تسمح للمستخدم بتحديد وظائف الحماية على مستويات مختلفة من التطبيق (التطبيق، جهاز التوجيه، وحدة التحكم وما إلى ذلك) والتحقق من صحة الطلب قبل الوصول إلى وظيفة معالج المسار.
from litestar import Litestar , get
from litestar . connection import ASGIConnection
from litestar . handlers . base import BaseRouteHandler
from litestar . exceptions import NotAuthorizedException
async def is_authorized ( connection : ASGIConnection , handler : BaseRouteHandler ) -> None :
# validate authorization
# if not authorized, raise NotAuthorizedException
raise NotAuthorizedException ()
@ get ( "/" , guards = [ is_authorized ])
async def index () -> None : ...
app = Litestar ([ index ])
يدعم Litestar خطافات دورة حياة الطلب، على غرار Flask - أي before_request
و after_request
لايتستار سريع. إنه على قدم المساواة أو أسرع بكثير من أطر عمل ASGI المماثلة.
يمكنك رؤية المعايير وتشغيلها هنا، أو قراءة المزيد عنها هنا في وثائقنا.
Litestar مفتوح للمساهمات الكبيرة والصغيرة. يمكنك دائمًا الانضمام إلى خادم Discord الخاص بنا أو الانضمام إلى مساحة Matrix الخاصة بنا لمناقشة المساهمات وصيانة المشروع. للحصول على إرشادات حول كيفية المساهمة، يرجى الاطلاع على دليل المساهمة.
نعمان هيرشفيلد ؟ | بيتر شوت ؟ | أشوين فينود | داميان | فنسنت ساراجو | جوناس كروجر سفينسون ؟ | سوندر ليليبو جوندرسن ؟ |
ليف ؟ | تيم ويدي | توري كلاسن | أرسيني بويكوف ؟ | جاكوب رودجرز | دان سولبرج | madlad33 |
ماثيو ايلوارد | جان كليما | C2D | إلى الرقم الهيدروجيني | imbev | كاتالين | سيون82 |
سلافا | هاري | كودي فينشر ؟ | كريستيان كلاوس | josepdaniel | com.devtud ؟ | نيكولاس راموس |
seladb | سيمون فينهوفر | موبيوسكسس | ايدان سيمارد | com.wweber | صموئيل كولفين | ماتيوس ميكووايتشيك |
أليكس | أوديسيو | خافيير بينيلا | تشاويينج | infohash | جون إنجلز | يوجين |
جون دالي | هارشال لاهيري | تيفا كريف | كونستانتين ميخائيلوف ؟ | ميتشل هنري | chbndrhns | نيلسفانهوي ؟ |
com.provinzkraut ؟ | جوشوا برونسون | رومان ريزنيكوف | mookrs | مايك ديبالاتيس | كارلوس ألبرتو بيريز مولانو | يفكر بسرعة |
كريستوفر كراوس | كايل سميث ؟ | سكوت برادلي ؟ | سريكانث تشيكوري | مايكل بوش | sssssss340 ؟ | ste-pool ؟ |
ألك ألك | شيء ما | غاري بولوك | نيكلاس هادرير | دييغو ألفاريز | جيسون نانس | ايجور كابادزي |
سومراج ساها | ماغنوس آغوست سكولاسون | أليسيو بارما | بيتر برونر | قهوة جاكوب | جامازيك | كريم محليس |
عبد الحق امحمد | جينيش | كريس القياس عن بعد | جناح ؟ | ستيفان فيتزباتريك ؟ | اريك كينيدي | وصاف شهزاد |
نيلز أولسون ؟ | رايلي تشيس | آرل ؟ | أنطوان فان دير هورست | نيك جرونين | جورجيو فيلااردو | نيكولاس بولويج |
توماس جونسون | خيم دوان | كيدود | sonpro1296 | باتريك أرمينجول | ساندر | 疯人院主任 |
أفيرال نايا | com.wiskeyriver | فيو اركار لوين | ماثيو نيولاند ؟ | توم كو ؟ | LeckerenSirupwaffeln ؟ | دانييل جونزاليس فرنانديز |
01EK98 | ساربو روي | ريان سيلي | فيليكس ؟ | جورج ساكيس | هوبا توبا | ستيفان فيرميجييه |
r4ge | جاي | com.sinisaos | ثاروكا ديفيندرا | euri10 ؟ | شوبهام | إريك هاس ؟ |
نيكيتا سوبوليف ؟ | نجوين هوانج Đức ؟ | رافانابراما | مارسيل يوهانسمان | ماثيو | ماتوماستر58 ؟ | مانويل سانشيز بينار |
خوان ريفيروس | ديفيد بروشارت | شون دونوغو | بي سي شيامشانكار ؟ | ويليام إيفونوسكي | جيشتا ؟ | روبرت روسكا |
DICE_Lab | لويس سان بابلو | باستوخوف نيكيتا | جيمس أوكلير | بيت | الكسندر ريتشونييه | com.betaboon |
دينيس براخان ؟ | براغي أغاروال | بيوتر ديبوفسكي | كونراد شزوريك | أوريل جارتن | جوليان | ليجاي هسو ؟ ؟ |
ميشيل دبليو بيجين | إل باو | جاريد جلاسر | هانتر بويد | سيزار جولييتي | ماركوس ليم | هنري تشو ؟ |
ويليام ستام | أندرو يفعل | بوسونج تشوي | كيم مينكي | جيونجسوب ليم | فيرغوسموك | مانو سينغال |
جيري وو | هورو ؟ | روس تيتمارش | مايك كورنييف | باتريك نيس | جان ارهانسيت ؟ | ليو أليكسييف |
أرانفير | المعالج الارنب | بن لو | هوغو فان كيميناد | مايكل جربيج | كريس أوج ؟ | هاريل |
جيمس بينيت ؟ | com.sherbang | كارل سميدستاد | تاين مين | ستانيسلاف ليو. ؟ | تيبور ريس | أليكس ؟ |
جورين ستة | jderrien | ممكن الباندا | evstrat ؟ | إيكو التوسيار أشيميني | تيمور ابراهيم | لام ارمسترونج |
أنورجان سريفاستافا | سيمون جوزيف | أبيل كيدان مريم | تريم21 | أوجستين آرسي | فرحان علي رضا | فابيان |
محمد بابلي | تشارلز دافي | يفجيني ديمشينكو | أولزاس أريستانوف ؟ | فيكاش |
يتبع هذا المشروع مواصفات جميع المساهمين. المساهمات من أي نوع موضع ترحيب!