Sanic Middleware 중간부품

3380 단어
Translate from sanic docs

Middleware


Middleware are functions which are executed before or after requests to the server. They can be used to modify the request to or response from user-defined handler functions.
중간부품은 서버 요청이 실행되기 전이나 실행된 후에 실행되는 함수입니다. 요청 or 응답을 조정하는 데 사용됩니다. (사용자 정의 함수에서)
There are two types of middleware: request and response. Both are declared using the @app.middleware decorator, with the decorator’s parameter being a string representing its type: request or response . Response middleware receives both the request and the response as arguments.
리퀘스트와response 두 가지 중간부품이 있는데 모두 @app.middleware 장식기를 통해 설명합니다. 장식기의 매개 변수는 문자열이고 유형은 request,response 입니다.response 중간부품은 request와response 파라미터를 동시에 수신합니다.
The simplest middleware doesn’t modify the request or response at all:
가장 간단한 중간부품,request,response를 수정하지 않았습니다
@app.middleware('request')
async def print_on_request(request):
    print("I print when a request is received by the server")

@app.middleware('response')
async def print_on_response(request, response):
    print("I print when a response is returned by the server")

Modifying the request or response


Middleware can modify the request or response parameter it is given, as long as it does not return it. The following example shows a practical use-case for this.
중간부품은 주어진request와response 파라미터를 수정할 수 있습니다. 전제는 중간부품이 이 파라미터를 되돌려 주지 않는다는 것입니다.다음 프로그램은 다음과 같은 실행 가능한 예를 제공합니다.
app = Sanic(__name__)

@app.middleware('response')
async def custom_banner(request, response):
    response.headers["Server"] = "Fake-Server"

@app.middleware('response')
async def prevent_xss(request, response):
    response.headers["x-xss-protection"] = "1; mode=block"

app.run(host="0.0.0.0", port=8000)

The above code will apply the two middleware in order. First, the middleware custom_banner will change the HTTP response header Server to Fake-Server, and the second middleware prevent_xss will add the HTTP header for preventing Cross-Site-Scripting (XSS) attacks. These two functions are invoked after a user function returns a response.
위의 코드는 두 개의 중간부품을 순서대로 운행했다.첫 번째 중간부품custom_banner은 HTTP Response hand server를 Fake-server로 수정합니다.두 번째 중간부품prevent_xss은 XSS 공격을 막기 위해 HTTP 헤더를 추가합니다.이 두 함수는 사용자 함수가 응답을 되돌려 준 후에 활성화됩니다.

Responding early


If middleware returns a HTTPResponse object, the request will stop processing and the response will be returned. If this occurs to a request before the relevant user route handler is reached, the handler will never be called. Returning a response will also prevent any further middleware from running.
중간부품이 객체 HTTPResponse 를 반환하면 request 이 중지되고 response 이 반환됩니다.만약 상술한 상황이 상응하는 루트 프로세서와 촉발되었다면, 이 프로세서는 영원히 실행되지 않을 것이다.복귀 response 는 다른 실행 중인 중간부품을 보호할 수 있습니다.
@app.middleware('request')
async def halt_request(request):
    return text('I halted the request')

@app.middleware('response')
async def halt_response(request, response):
    return text('I halted the response')

좋은 웹페이지 즐겨찾기