Sanic Middleware 중간부품
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')
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSON
JSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다.
그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다.
저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.
@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")
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)
@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')
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.