ตรวจสอบผู้สนับสนุนของเราในเอกสาร
หากคุณต้องการสนับสนุนงานที่เราทำ โปรดพิจารณาเป็นผู้สนับสนุนผ่านทาง 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 ยังสนับสนุนการสร้าง DTO แบบเป็นโปรแกรมด้วยคลาส 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
ซึ่งช่วยให้ผู้ใช้สามารถกำหนดฟังก์ชัน 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 รองรับ hook วงจรชีวิตของคำขอ เช่นเดียวกับ Flask เช่น before_request
และ after_request
Litestar ทำงานเร็วมาก เทียบเท่าหรือเร็วกว่าเฟรมเวิร์ก ASGI ที่เทียบเคียงได้อย่างมาก
คุณสามารถดูและเรียกใช้การวัดประสิทธิภาพได้ที่นี่ หรืออ่านเพิ่มเติมได้ที่นี่ในเอกสารประกอบของเรา
Litestar เปิดรับการสนับสนุนไม่ว่าจะเล็กหรือใหญ่ คุณสามารถเข้าร่วมเซิร์ฟเวอร์ Discord ของเราหรือเข้าร่วมพื้นที่ Matrix ของเราเพื่อหารือเกี่ยวกับการมีส่วนร่วมและการบำรุงรักษาโครงการได้เสมอ สำหรับคำแนะนำเกี่ยวกับวิธีการมีส่วนร่วม โปรดดูคู่มือการบริจาค
นาอามาน เฮิร์ชเฟลด์ - | ปีเตอร์ ชูตต์ - | อาชวิน วิโนด | เดเมียน | วินเซนต์ ซาราโก | โยนาส ครูเกอร์ สเวนส์สัน - | ซอนเดร ลิลเลโบ กุนเดอร์เซ่น - |
เลฟ - | ทิม เวดเด้ | ทอรี่ คลาเซน | อาร์เซนี บอยคอฟ - | เจค็อบ ร็อดเจอร์ส | เดน โซลเบิร์ก | แมดลาด33 |
แมทธิว อายล์วาร์ด | แจน คลีมา | ซีทูดี | ถึง-ph | อิมเบฟ | กาตาลิน | ซอน82 |
สลาวา | แฮร์รี่ | โคดี้ ฟินเชอร์ - | คริสเตียนคลอส | โจเซฟดาเนียล | ทุ่มเท - | นิโคลัส รามอส |
เซลาดบ | ไซมอน วีนโฮเฟอร์ | โมเบียสเอ็กซ์เอส | ไอดาน ซิมาร์ด | เว็บเบอร์ | ซามูเอล โคลวิน | มาเตอุสซ์ มิโคลาจซิก |
อเล็กซ์ | โอดิซิโอ | ฮาเวียร์ ปินิลลา | วุ่นวาย | ข้อมูลแฮช | จอห์น อิงเกิลส์ | ยูจีน |
จอน ดาลี่ | ฮาร์ชาล ลาเฮรี | เทวา ครีฟ | คอนสแตนติน มิคาอิลอฟ - | มิทเชล เฮนรี่ | chbndrhnns | นีลส์วานฮูย - |
จังหวัด - | โจชัว บรอนสัน | โรมัน เรซนิคอฟ | มุก | ไมค์ เดอปาลาติส | คาร์ลอส อัลแบร์โต้ เปเรซ-โมลาโน่ | คิดเร็ว |
คริสโตเฟอร์ เคราส์ | ไคล์ สมิธ - | สกอตต์ แบรดลีย์ - | ศรีกันต์ เชกูรี | ไมเคิล บอช | sssssss340 - | สระว่ายน้ำ - |
อัลค์-อัลค์ | บางสิ่งบางอย่าง | แกรี่ บุลล็อค | นิคลาส ฮาเดอเรอร์ | ดิเอโก้ อัลวาเรซ | เจสัน แนนซ์ | อิกอร์ คาปาดเซ |
สมราช สหะ | มักนุส อากุสต์ สกูลาสัน | อเลสซิโอ ปาร์ม่า | ปีเตอร์ บรุนเนอร์ | เจค็อบ คอฟฟี่ | กามาซิค | คารีม มาห์ลีส |
อับดุลฮัก เอมเฮมเมด | เจนิช | คริสมาตร | วอร์ด - | สเตฟาน ฟิตซ์แพทริค - | เอริค เคนเนดี | วาซาฟ ชาห์ซาด |
นิลส์ โอลส์สัน - | ไรลีย์ เชส | อาร์ล - | อองตวน ฟาน เดอร์ ฮอร์สต์ | นิค กรีนเนน | จอร์โจ้ วิลาร์โด้ | นิโคลัส บอลเวก |
โทมัส จอนส์สัน | เขียมโดน | เคโดด | ซันโปร1296 | แพทริค อาร์เมงโกล | ซานเดอร์ | 疯人院主任 |
aviral-nayya | วิสกี้ริเวอร์ | พโย อาการ์ ลวิน | แมทธิว นิวแลนด์ - | ทอม กัว - | เลคเคอเรน สิรุปวัฟเฟิลน์ - | ดาเนียล กอนซาเลซ เฟอร์นันเดซ |
01EK98 | ซาร์โบ รอย | ไรอัน ซีลีย์ | เฟลิกซ์ - | จอร์จ ซัคคิส | ฮูบา ทูบา | สเตฟาน เฟอร์มิเยร์ |
r4ge | เจย์ | ซินิซอส | ทารุกา เดเวนดรา | ยูริ10 - | ชูบาม | เอริค ฮาสเซ่ - |
นิกิต้า โซโบเลฟ - | เหงียนฮ่องดึ๊ก - | ทศกัณฐ์ภรามะ | มาร์เซล โยฮันเนสมันน์ | แมทธิว | แมตต์มาสเตอร์58 - | มานูเอล ซานเชซ ปินาร์ |
ฮวน ริเวรอส | เดวิด โบรชาร์ท | ฌอน โดโนฮิว | พีซี ชยัมชานการ์ - | วิลเลียม เอโวโนสกี้ | เกชต้า - | โรเบิร์ต รอสก้า |
ไดซ์_แล็บ | หลุยส์ ซาน ปาโบล | ปาสตูคอฟ นิกิต้า | เจมส์ โอแคลร์ | พีท | อเล็กซานเดร ริโชเนียร์ | เบตาบูน |
เดนนิส บราคาน - | ปราบกี อัครวาล | ปิโอเตอร์ ดีโบวสกี้ | คอนราด ซซูเรค | โอเรล การ์เทน | จูเลียน | ลีเจย์ ซู - - |
มิเชล ดับเบิลยู. เป่ยเจน | ล.เปา | จาร์เรด กลาสเซอร์ | ฮันเตอร์ บอยด์ | ซีซาร์ จูเลียตติ | มาร์คัส ลิม | เฮนรี่โจว - |
วิลเลียม สตัม | แอนดรูว์ทำ | โบซอง ชอย | คิม มินกิ | จองซอบ ลิม | เฟอร์กัสม็อก | มนู สิงคาล |
เจอร์รี่ หวู่ | โฮโร - | รอสส์ ทิตมาร์ช | ไมค์ คอร์นีฟ | แพทริค นีส | ฌอง อาร์แฮนเซท - | ลีโอ อเล็กเซเยฟ |
อารันเวียร์ | นักบำบัดกระต่าย | เบน หลัว | ฮูโก้ ฟาน เคเมนาด | ไมเคิล เกอร์บิ๊ก | คริสโอก - | แฮร์รี่ |
เจมส์ เบนเน็ตต์ - | เชอร์บัง | คาร์ล สเมดสตัด | แทอิน มิน | สตานิสลาฟ ลิว. - | ติบอร์ รีส | อเล็กซ์ - |
จอเรน หก | เจเดอร์เรียน | เป็นไปได้แพนด้า | เอฟสแตรท - | อิคโกะ เอลโตเซียร์ อาชิมิเนะ | ไตมูร์ อิบราฮิม | แอล-อาร์มสตรอง |
อนุรันจัน ศรีวัฒวะ | ไซมอน โจเซฟ | อาเบล คิดาเนมาเรียม | ทริม21 | ออกัสติน อาร์ซ | ฟาร์ฮาน อาลี ราซา | ฟาเบียน |
โมฮัมเหม็ด บาเบลลี | ชาร์ลส์ ดัฟฟี่ | เยฟเจนี เดมเชนโก้ | โอลฮาส อารีสตานอฟ - | วิคาช |
โครงการนี้เป็นไปตามข้อกำหนดของผู้มีส่วนร่วมทั้งหมด ยินดีต้อนรับการบริจาคใด ๆ !