응답
Starlette에는 에 사용되는 응답 클래스가 포함되어 있습니다. send 채널에서 적절한 ASGI 메시지를 보냅니다.
응답
서명: Response(content, status_code=200, headers=None, media_type=None)
content- 문자열 또는 바이트 문자열.status_code정수 HTTP 상태 코드.headers- 문자열 사전.media_type- 미디어 유형을 제공하는 문자열입니다. 예를 들어 "텍스트/html"
Starlette에는 콘텐츠 길이 헤더가 자동으로 포함됩니다. 또한 media_type에 따라 콘텐츠 유형 헤더가 포함되며 media_type 에 문자 집합이 이미 지정되지 않은 경우 텍스트 유형에 대한 문자 집합을 추가합니다.
응답을 Instantiate하면 ASGI 응용 프로그램 인스턴스로 호출하여 보낼 수 있습니다.
스타렛의 응답.
비동기 def 앱(범위, 수신, 전송):
주장 범위 ['유형'] == 'http'
응답 = 응답('안녕하세요, 세상!', media_type = '텍스트/일반')
응답 대기 중(범위, 수신, 전송)
쿠키 설정
Starlette는 응답 개체에 쿠키를 설정할 수 있는 set_cookie 방법을 제공합니다.
서명: Response.set_cookie(key, value, max_age=None, expires=None, path="/", domain=None, secure=False, httponly=False, samesite="lax")
key쿠키 키로 사용할 문자열입니다.value쿠키 값으로 사용할 문자열입니다.max_age- 쿠키 수명을 초 단위로 정의하는 정수입니다.0의 음의 정수 또는 값은 즉시 쿠키를 폐기합니다.Optionalexpires- 쿠키가 만료되기 전의 시간을 정의하는 정수 또는 날짜 및 시간.Optionalpath쿠키가 적용될 경로의 하위 집합을 지정하는 문자열입니다.Optionaldomain- 쿠키가 유효한 필드를 지정하는 문자열입니다.OptionalsecureSSL 및 HTTPS 프로토콜을 사용하여 요청이 있을 때만 쿠키가 서버로 전송됨을 나타내는 부울 값입니다.Optionalhttponly-Document.cookie속성,XMLHttpRequest또는RequestAPI.Optional를 통해 JavaScript를 통해 쿠키에 액세스할 수 없음을 나타내는 부울 값입니다.samesite- 쿠키에 대한 동일한 사이트 정책을 지정하는 문자열입니다. 유효한 값은'lax','strict'및'none'입니다. 기본값은'lax'입니다.Optional
쿠키 삭제
반대로 Starlette는 세트 쿠키를 수동으로 만료하는 delete_cookie 방법도 제공합니다.
서명: Response.delete_cookie(key, path='/', domain=None)
HTML 응답
일부 텍스트 또는 바이트를 수신하고 HTML 응답을 반환합니다.
Starlette.에서 HTML 응답 가져오기
비동기 def 앱(범위, 수신, 전송):
주장 범위 ['유형'] == 'http'
응답 = HTML 응답('<html><body><h1>안녕하세요, 세계!</h1></body></html>')
응답 대기 중(범위, 수신, 전송)
일반 텍스트 응답
일부 텍스트 또는 바이트를 수신하고 일반 텍스트 응답을 반환합니다.
Starlette.에서 일반 텍스트 응답을 가져옵니다.
비동기 def 앱(범위, 수신, 전송):
주장 범위 ['유형'] == 'http'
응답 = 일반 텍스트 응답('안녕하세요, 세상!')
응답 대기 중(범위, 수신, 전송)
JSON 응답
일부 데이터를 가져오고 application/json 인코딩 응답을 반환합니다.
Starlette.에서 JSONResponse 가져오기
비동기 def 앱(범위, 수신, 전송):
주장 범위 ['유형'] == 'http'
응답 = JSON응답 ({'hello': 'world'})
응답 대기 중(범위, 수신, 전송)
사용자 지정 JSON 직렬화
JSON 직렬화에 대한 미세 그레인 제어가 필요한 경우 JSONResponse 를 하위 클래스하고 render 메서드를 재정의할 수 있습니다.
예를 들어 orjson과 같은 타사 JSON 라이브러리를 사용하려면 다음과 같이 하십시오.
입력에서 가져온 모든 항목
Orjson 가져오기
Starlette.에서 JSONResponse 가져오기
클래스 Orjson 응답(JSON 응답):
데프 렌더(자체, 내용: 임의) -> 바이트:
orjson.dumps(콘텐츠)를 반환합니다.
일반적으로 특정 엔드포인트를 미세 최적화하거나 비표준 개체 유형을 직렬화할 필요가 없는 경우 기본적으로 JSONResponse 를 고수하는 것이 좋습니다.
리디렉션 응답
HTTP 리디렉션을 반환합니다. 기본적으로 307 상태 코드가 사용됩니다.
Starlette.에서 일반 텍스트 응답, 리디렉션 응답을 가져옵니다.
비동기 def 앱(범위, 수신, 전송):
주장 범위 ['유형'] == 'http'
범위가 ['경로']인 경우! = '/':
응답 = 리디렉션 응답 (url = '/')
기타:
응답 = 일반 텍스트 응답('안녕하세요, 세상!')
응답 대기 중(범위, 수신, 전송)
스트리밍 응답
비동기 생성기 또는 일반 생성기/반복기를 사용하여 응답 본문을 스트리밍하십시오.
Starlette.에서 가져온 스트리밍 응답
비신시오 가져오기
비동기 def 슬로우_숫자(최소, 최대):
수율'<html><body><ul>'
범위의 숫자(최소, 최대 +1):
항복 '<li>%d</li>'% 번호
비동기 대기 중.수면 (0.5)
수율'</ul></body></html>'
비동기 def 앱(범위, 수신, 전송):
주장 범위 ['유형'] == 'http'
생성기 = 슬로우 _ 숫자 (1, 10)
응답 = 스트리밍 응답(생성기, media_type = '텍스트 / html')
응답 대기 중(범위, 수신, 전송)
클래스 파일 개체(에 의해 정의된 대로)에 유의하십시오. open() 생성된 개체)는 일반 반복자입니다. 따라서 할 수 있습니다. StreamingResponse 직접 반환하십시오.
파일 응답
파일을 비동기적으로 응답으로 스트리밍하십시오.
Instantiation에는 다른 응답 유형과 다른 매개 변수 집합이 필요합니다.
path스트리밍할 파일의 파일 경로입니다.headers- 사전으로 포함할 모든 사용자 지정 헤더.media_type- 미디어 유형을 제공하는 문자열입니다. 설정되지 않은 경우 파일 이름 또는 경로를 사용하여 미디어 유형을 추론합니다.filename설정된 경우 응답에 포함됩니다.Content-Disposition인.content_disposition_type- 응답Content-Disposition에 포함됩니다. "첨부"(기본값) 또는 "내부 연결"로 설정할 수 있습니다.
파일 응답에는 적절한 Content-Length,Last-Modified 및 ETag 헤더가 포함됩니다.
Starlette.에서 가져온 FileResponse
비동기 def 앱(범위, 수신, 전송):
주장 범위 ['유형'] == 'http'
응답 = 파일 응답('statics/favicon.ico')
응답 대기 중(범위, 수신, 전송)
타사 응답
사고 소스 응답
서버에서 보낸 이벤트를 구현하는 응답 클래스입니다. 웹 소켓의 복잡성 없이 서버에서 클라이언트로 이벤트 스트리밍을 가능하게 합니다.
Baize.asgi. 파일 응답
Starlette FileResponse 의 부드러운 대안으로 Head 메소드 및 Range 요청을 자동으로 처리합니다.