API 구축

🐴 왜



이 튜토리얼은 데이터베이스 인스턴스에 연결하고 클라이언트 요청 시 소비자 신용 데이터를 주기적으로 캐시하고 제공하는 서비스를 구축하기 위해 supabase api를 사용하는 예제 역할을 해야 합니다. 이 프로젝트는 캐싱 메커니즘으로서의 redis, postgres 인스턴스를 지원하기 위한 supabase 및 프레임워크를 위한 fastapi를 다룹니다.

시작하기 전에



다음을 설정하고 마지막 링크에 있는 코드를 사용하여 따르십시오.
  • Installing Redis
  • Setting up Supabase
  • Getting started with FastApi
  • The code

  • ☂️ 환경 설정



    가상 환경 설정:

    python3 -m venv env 
    


    환경 활성화

    source env/bin/activate
    


    루트 디렉터리에서 다음을 실행합니다.

    pip install -r requirements.txt
    


    🤖 개발 환경에서 Redis 시작하기



    redis 작업을 시작하려면 다음 명령을 실행하고 완료 후 새 터미널 창을 엽니다.

    redis-server
    


    👾 개발 서버 활성화



    로컬 서버를 시작하려면 다음 명령을 실행하십시오.

    uvicorn main:app --reload
    


    commad가 성공하면 다음을 볼 수 있습니다.

    INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
    INFO:     Started reloader process [13385] using watchgod
    INFO:     Started server process [13387]
    2022-02-11 19:32:12,509:INFO - Started server process [13387]
    INFO:     Waiting for application startup.
    2022-02-11 19:32:12,509:INFO - Waiting for application startup.
    2022-02-11 19:32:12,510:INFO -  02/11/2022 07:32:12 PM | CONNECT_BEGIN: Attempting to connect to Redis server...
    2022-02-11 19:32:12,511:INFO -  02/11/2022 07:32:12 PM | CONNECT_SUCCESS: Redis client is connected to server.
    INFO:     Application startup complete.
    2022-02-11 19:32:12,511:INFO - Application startup complete.
    


    🎾 끝점



    응용 프로그램 소개.

    http "http://127.0.0.1:8000/"
    
    HTTP/1.1 200 OK
    content-length: 102
    content-type: application/json
    date: Wed, 16 Feb 2022 22:01:14 GMT
    server: uvicorn
    
    {
        "👋 Hello": "Please refer to the readme documentation for more or visit http://localhost:8000/docs"
    }
    


    Redis 캐시로 작업하면 다음 호출이 데이터를 가져옵니다.
    supabase 데이터베이스에서 캐시합니다.

    x-fastapi-cache 헤더 필드는 이 응답이 Redis 캐시(일명 Hit)에서 발견되었음을 나타냅니다.

    이 필드에 사용할 수 있는 유일한 다른 값은 Miss입니다. 만료 필드와 캐시 제어 필드의 max-age 값은 이 응답이 604321초(1주) 동안 새로운 것으로 간주됨을 나타냅니다. 이것은 @cache 데코레이터에 지정되었기 때문에 예상됩니다.

    etag 필드는 응답 데이터를 문자열로 변환하고 해시 함수를 적용하여 생성되는 식별자입니다. if-none-match 헤더가 포함된 요청이 수신되면 요청에 포함된 모든 etag 값을 사용하여 요청된 데이터가 캐시에 저장된 데이터와 동일한지 확인합니다. 동일한 경우 304 NOT MODIFIED 응답이 전송됩니다. 동일하지 않으면 캐시된 데이터가 200 OK 응답과 함께 전송됩니다.

    # Command
    http "http://127.0.0.1:8000/cachedResults"
    
    # Response Headers
    HTTP/1.1 200 OK
    cache-control: max-age=604321
    content-length: 894
    content-type: application/json
    date: Wed, 16 Feb 2022 21:53:56 GMT
    etag: W/-9174636245072902018
    expires: Wed, 23 Feb 2022 21:45:57 GMT
    server: uvicorn
    x-supafast-cache: Hit
    

    좋은 웹페이지 즐겨찾기