인프런 커뮤니티 질문&답변

최원호님의 프로필 이미지
최원호

작성한 질문수

처음하는 파이썬 백엔드 FastAPI 부트캠프 (FastAPI부터 비동기 SQLAlchemy까지) [풀스택 Part1-2]

curl -X POST http://127.0.0.1:8000/set/ -i -c cookies.txt 에러

작성

·

45

0

세션을 실행하고 있어 curl로 실행하려고 하는데 아래와 같은 에러 메세지가 뜨네요.

Invoke-WebRequest : 매개 변수 이름 'c'이(가) 모호하므로 매개 변수를 처리할 수 없습니다. 일치하는 항목은 다음과

같습니다. -Credential -CertificateThumbprint -Certificate -ContentType.

위치 줄:1 문자:45

+ curl -X POST http://127.0.0.1:8000/set/ -i -c cookies.txt

+ ~~실행하면 위와 같은 에러메시지가 나오는데 어떻게 해결할 수 있나요? from fastapi import FastAPI,Request from fastapi.security import HTTPBasic from starlette.middleware.sessions import SessionMiddleware app=FastAPI() app.add_middleware(SessionMiddleware,secret_key="your-secret-key") @app.post("/set/") async def set_session(request:Request): request.session["username"]='smith' return {"message":"Session value"} @app.get("/get/") async def get_session(request:Request): username=request.session.get("username","Guest") return {"username":username}

답변 1

0

안녕하세요. 답변 도우미입니다.

혹시 curl 명령을 Windows 의 PowerShell 에서 실행하셨는지 궁금하네요. 사실 저도 그런 에러를 본적은 없다보니 무엇이 문제인지 찾아보았는데요.

다음과 같은 답변을 확인하였습니다. PC 환경이 워낙 다양해서 꼭 무조건 PowerShell 에서는 안된다는 건 아닌데, 특정 환경에서는 또 이러한 문제가 있을 수 있는 것 같습니다. 다음과 같은 가이드와 함께 curl.exe 로 테스트를 해보시면 어떠실까요?

현재 발생한 오류는 curl 명령어를 Windows의 PowerShell에서 실행하려고 할 때 발생하는 문제입니다. Windows PowerShell에서는 curl 명령어를 Invoke-WebRequest로 해석하는데, 이로 인해 명령어의 옵션인 -cInvoke-WebRequest의 여러 매개변수 중 하나로 오인되어 발생하는 문제입니다.

해결 방법

  1. PowerShell에서 curl 대신 curl.exe 사용하기: PowerShell은 기본적으로 curl 명령어를 Invoke-WebRequest로 대체합니다. 이를 우회하기 위해 명령어에서 curl 대신 curl.exe를 사용해보세요.

    curl.exe -X POST http://127.0.0.1:8000/set/ -i -c cookies.txt
  2. PowerShell에서 Invoke-WebRequest 명령어 사용: PowerShell에서는 curl 대신 Invoke-WebRequest를 사용할 수 있습니다. 그러나 이 경우 -c 옵션(쿠키 저장)을 사용할 수 없기 때문에, Invoke-WebRequest로는 동일한 기능을 처리하기 어렵습니다.

    대신, curl 명령어는 Windows용으로 제공되는 Git BashWSL(Windows Subsystem for Linux) 환경에서 사용할 수 있습니다.

  3. Git Bash나 WSL을 사용: PowerShell 대신 Git Bash나 WSL을 사용하면, curl 명령어가 리눅스 환경처럼 제대로 동작합니다. Git Bash는 간단히 설치할 수 있으며, 리눅스 명령어들과 동일한 명령어를 사용할 수 있습니다.

요약

  • PowerShell에서는 curl.exe로 명령어를 실행하면 문제가 해결될 가능성이 큽니다.

  • PowerShell에서 명령어를 사용하려면 Invoke-WebRequest 대신 Git BashWSL에서 curl 명령어를 사용하는 것이 더 좋습니다.

감사합니다. 잔재미코딩 드림.

최원호님의 프로필 이미지
최원호

작성한 질문수

질문하기