콘텐츠로 이동

응답

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 의 음의 정수 또는 값은 즉시 쿠키를 폐기합니다.Optional
  • expires - 쿠키가 만료되기 전의 시간을 정의하는 정수 또는 날짜 및 시간. Optional
  • path 쿠키가 적용될 경로의 하위 집합을 지정하는 문자열입니다. Optional
  • domain - 쿠키가 유효한 필드를 지정하는 문자열입니다. Optional
  • secure SSL 및 HTTPS 프로토콜을 사용하여 요청이 있을 때만 쿠키가 서버로 전송됨을 나타내는 부울 값입니다. Optional
  • httponly-Document.cookie 속성,XMLHttpRequest 또는 Request API.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 요청을 자동으로 처리합니다.