반응형
Notice
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 데이터과학
- 알고리즘
- 네트워크보안
- 데이터구조
- I'm Sorry
- 클라우드컴퓨팅
- 컴퓨터비전
- 네트워크
- 소프트웨어
- 딥러닝
- 자바스크립트
- 2
- 데이터분석
- 사이버보안
- 프로그래밍
- 컴퓨터과학
- 머신러닝
- 버전관리
- Yes
- 인공지능
- 프로그래밍언어
- 파이썬
- 웹개발
- 소프트웨어공학
- 빅데이터
- 데이터베이스
- 자료구조
- 컴퓨터공학
- 보안
- 코딩
Archives
- Today
- Total
스택큐힙리스트
FastAPI/Starlette를 사용하여 경로의 이름을 어떻게 가져올까요? 본문
반응형
{'type': 'http', 'asgi': {'version': '3.0', 'spec_version': '2.3'}, 'http_version': '1.1', 'server': ('127.0.0.1', 8001), 'client': ('127.0.0.1', 56670), 'scheme': 'http', 'root_path': '', 'headers': [(b'user-agent', b'PostmanRuntime/7.29.2'), (b'accept', b'*/*'), (b'postman-token', b'f2da2d0f-e721-44c8-b14f-e19750ea8a68'), (b'host', b'localhost:8001'), (b'accept-encoding', b'gzip, deflate, br'), (b'connection', b'keep-alive')], 'method': 'GET', 'path': '/health', 'raw_path': b'/health', 'query_string': b'', 'app': <fastapi.applications.FastAPI object at 0x1036d5790>}
업데이트 2: request.scope[route]
가 깨지는 경우 미들웨어 코드를 제공합니다.
from fastapi import FastAPI, Request
app = FastAPI()
@app.middleware(http)
async def logging_middleware(request: Request, call_next):
print(request.scope['route'].name)
response = await call_next(request)
return response
@app.get('/', name='abc')
def get_name(request: Request):
return request.scope['route'].name
from fastapi import FastAPI, Request
app = FastAPI()
@app.middleware(http)
async def logging_middleware(request: Request, call_next):
print(request.scope['route'].name)
response = await call_next(request)
return response
@app.get('/', name='abc')
def get_name(request: Request):
return request.scope['route'].name
답변 1
미들웨어 대신에 APIRoute
클래스를 생성할 수도 있습니다. 이는 request
를 처리하고 response
를 받기 전에 route의 name
을 가져올 수 있게 해주는 역할을 합니다 (앱에 요구 사항인 경우). 이렇게 하려면 APIRoute
클래스가 처리되기를 원하는 엔드포인트를 @app
대신에 @<name_of_router_instance>
을 사용하여 추가할 수 있습니다. 예를 들면, @router.get('/', name='abc')
과 같은 방식입니다. 여러 개의 엔드포인트도 같은 방법으로 추가할 수 있습니다. 예시:
from fastapi import APIRouter, FastAPI, Request, Response
from typing import Callable
from fastapi.routing import APIRoute
class CheckNameRoute(APIRoute):
def get_route_handler(self) -> Callable:
original_route_handler = super().get_route_handler()
async def custom_route_handler(request: Request) -> Response:
print(request.scope['route'].name)
response = await original_route_handler(request)
return response
return custom_route_handler
app = FastAPI()
router = APIRouter(route_class=CheckNameRoute)
@router.get('/', name='abc')
def get_name(request: Request):
return request.scope['route'].name
app.include_router(router)
from fastapi import APIRouter, FastAPI, Request, Response
from typing import Callable
from fastapi.routing import APIRoute
class CheckNameRoute(APIRoute):
def get_route_handler(self) -> Callable:
original_route_handler = super().get_route_handler()
async def custom_route_handler(request: Request) -> Response:
print(request.scope['route'].name)
response = await original_route_handler(request)
return response
return custom_route_handler
app = FastAPI()
router = APIRouter(route_class=CheckNameRoute)
@router.get('/', name='abc')
def get_name(request: Request):
return request.scope['route'].name
app.include_router(router)
답변 2
FastAPI와 Starlette을 사용하여 경로의 이름을 어떻게 가져올 수 있는지 알아보겠습니다. 경로의 이름을 가져오는 것은 웹 애플리케이션의 검색 엔진 최적화(SEO)를 위해 매우 중요합니다. SEO는 검색 엔진에서 웹 사이트를 더 잘 찾을 수 있도록 하는 프로세스입니다. 경로의 이름은 웹 사이트 구조를 이해하는 데 도움이 되며, 검색 엔진 알고리즘이 페이지의 핵심 내용을 더 쉽게 식별할 수 있습니다.FastAPI와 Starlette은 파이썬 기반의 가벼운 웹 프레임워크로, 경로를 관리하고 핸들러 함수에 연결하는 데 사용됩니다. 기본적으로 경로는 URL 패턴을 기반으로 할당됩니다. 경로에 대한 이름은 FastAPI/Starlette을 사용하여 어렵지 않게 가져올 수 있습니다.
FastAPI/Starlette는 `name` 매개변수를 사용하여 경로에 이름을 할당하는 기능을 제공합니다. 이 기능을 사용하면 경로마다 고유한 이름을 지정할 수 있습니다. 아래는 예시 코드입니다.
```python
from fastapi import FastAPI
app = FastAPI()
@app.get(/users/{user_id}, name=user-details)
async def get_user(user_id: int):
return {user_id: user_id}
```
위의 코드에서 `name` 매개변수에 user-details라는 이름을 할당하였습니다. 이제 FastAPI/Starlette는 이 경로를 고유한 이름과 연결합니다. 경로의 이름은 SEO에 도움이 되는 URL을 생성하는 데 사용될 수 있습니다.
예를 들어, /users/42와 같은 URL은 검색 엔진에 대한 정보를 전달하기 어렵습니다. 하지만 /user-details와 같은 URL은 페이지 내용을 더 명확하게 식별할 수 있습니다. 검색 엔진 알고리즘은 경로의 이름을 사용하여 페이지의 주제를 이해하고, 검색 결과에 나타나는 데 도움을 줍니다.
경로의 이름을 통해 웹 사이트 구조를 명확히 전달하고, 검색 엔진이 페이지를 더 잘 식별하도록 하는 FastAPI/Starlette의 훌륭한 기능을 알아보았습니다. 경로의 이름을 설정함으로써 웹 사이트의 SEO를 향상시킬 수 있으며, 사용자에게 더 나은 검색 경험을 제공할 수 있습니다.
반응형
Comments