Python으로 응용 프로그램을 빌드할 때 타사 서비스에 연결하고 싶은 때가 올 수 있습니다. 예를 들어, 피트니스 도구를 구축하는 경우 Fitbit API에 연결하여 운동 데이터를 볼 수 있습니다. 문자 메시지를 보낼 수 있는 앱은 Twilio API에 연결할 수 있습니다.
Python에서 요청 라이브러리를 사용하면 타사 웹 서비스를 애플리케이션에 연결할 수 있도록 요청할 수 있습니다. 이 가이드에서는 Python 요청 라이브러리와 이를 사용하여 HTTP 요청을 보내는 방법에 대해 알아볼 것입니다.
웹 요청:새로 고침
요청은 인터넷의 중심에 있습니다. 이 기사를 클릭하면 HTTP 요청이 Career Karma 서버로 전송되었습니다. 그 요청은 우리 서버가 페이지를 찾을 수 있도록 당신이 보고 싶은 웹 페이지를 우리 서버에 알려줍니다. 웹 페이지를 찾으면 당사 웹 서버가 이를 귀하의 브라우저에 반환했습니다. 이 프로세스를 통해 이 튜토리얼을 볼 수 있습니다.
웹 요청은 다양한 형태로 제공됩니다. 이 웹 페이지를 보기 위해 만든 요청 유형을 GET 요청이라고 합니다. 이 유형의 요청을 통해 데이터를 검색할 수 있습니다. 서버의 리소스를 수정하는 데 사용되는 POST 및 PUT과 같은 다른 유형의 요청이 있습니다. 이 튜토리얼에서는 GET 및 POST 요청에 중점을 둘 것입니다.
요청 설치 방법
요청은 웹 요청을 할 수 있는 Python용 HTTP 라이브러리입니다.
Python을 사용하여 웹 요청을 하기 전에 Python 요청 코드 라이브러리를 설치해야 합니다. 다음 명령을 사용하여 수행할 수 있습니다.
pip 설치 요청
이제 Python 패키지를 다운로드했으므로 웹 요청을 할 준비가 되었습니다.
GET 요청 방법
가장 일반적인 웹 요청 유형은 GET 요청입니다. 이 유형의 요청을 통해 서버에서 데이터를 검색할 수 있습니다.
참가자의 81%는 부트캠프에 참석한 후 기술 직업 전망에 대해 더 자신감을 느꼈다고 말했습니다. 지금 부트캠프에 참여하십시오.
부트캠프 졸업생은 부트캠프 시작부터 첫 직장을 찾는 데까지 6개월도 채 걸리지 않았습니다.
고양이 정보 목록을 검색할 수 있는 앱을 만들고 있다고 가정해 보겠습니다. 이를 위해 cat-facts라는 API를 사용할 것입니다. 이 API는 공개되어 있으므로 로그인하는 데 자격 증명이 필요하지 않습니다. 이 코드를 사용하여 API에 요청할 수 있습니다.
가져오기 요청res =requests.get('https://cat-fact.herokuapp.com/facts')print(res.status_code)
이 코드는 200을 반환했습니다. 코드를 분석해 보겠습니다.
첫 번째 줄에서 요청 라이브러리를 가져왔습니다. 이를 통해 자습서에서 사용할 요청 라이브러리에 액세스할 수 있었습니다. 그런 다음 requests.get()
을 사용했습니다. 웹 요청을 하는 방법. .put()
과 같은 메소드를 사용할 수 있습니다. 또는 .post()
다른 유형의 요청을 만들지만 이 경우에는 cat-facts API에서 데이터를 검색하기만 하면 됩니다.
다음으로 웹 요청에서 상태 코드를 인쇄했습니다. 숫자 200이 반환되어 웹 요청이 성공적으로 완료되었음을 알렸습니다. 이 숫자가 의미하는 바는 튜토리얼 뒷부분에서 논의할 것입니다.
요청 보기
위의 예에서 요청의 상태 코드를 인쇄했습니다. 그러나 검색한 데이터를 어떻게 볼 수 있습니까? 고양이 사실은 어디에 있습니까? .text 및 .json()
방법이 들어옵니다.
문자 응답 보기
.text 메소드를 사용하여 웹 요청 결과를 볼 수 있습니다.
가져오기 요청res =requests.get('https://cat-fact.herokuapp.com/facts')print(res.text)
이 코드는 고양이 정보 목록을 반환했습니다. 그러나 우리가 쿼리하는 데이터가 API이기 때문에 이것은 우리에게 그다지 실용적이지 않습니다. 이제 고양이 정보의 Python 목록이 있지만 일반 텍스트로 되어 있기 때문에 읽기가 어렵습니다.
JSON 응답 보기
고양이 정보를 저장할 수 있는 더 유용한 형식은 JSON입니다. 다음 코드를 사용하여 요청에서 JSON 데이터를 검색할 수 있습니다.
인쇄(res.json())
우리 코드는 긴 고양이 정보 목록을 반환합니다. 목록의 첫 번째 레코드는 다음과 같습니다.
{'_id':'58e009550aac31001185ed12', 'text':'YouTube에서 가장 오래된 고양이 동영상은 1894년으로 거슬러 올라갑니다.', 'type':'cat', 'user':{'_id':'58e007480aac3100' , 'name':{'first':'Kasimir', 'last':'Schulz'}}, 'upvotes':6, 'userUpvoted':없음}
성공! 고양이 정보 목록을 검색하는 데 성공했습니다.
POST 요청 방법
요청 라이브러리를 사용하여 POST 요청을 할 수도 있습니다. 이렇게 하면 웹 서버에 저장된 데이터를 수정할 수 있습니다.
이 예에서는 Airtable API를 사용할 것입니다. POST 요청을 지원하는 API를 사용해야 하고 cat-facts API는 읽기 전용이기 때문입니다.
우리가 마시는 모든 차를 기록하는 데이터베이스가 있다고 가정합니다. 방금 차를 한 잔 더 마셨고 데이터베이스에 추가하려고 합니다. 다음 코드를 사용하여 그렇게 할 수 있습니다.
import requestsheaders ={'Authorization':'Bearer API_KEY','Content-Type':'application/json',}data ='{"records":[{"fields":{"Drink":"Black 디카페인 차"}}]}'res =requests.post('https://cat-fact.herokuapp.com/facts', headers=headers, data=data)print(res.json())
반환된 코드:
{'records':[{'id':'recqUEPuXEAXaNl1L', 'fields':{'Drink':'Black Decaf Tea', 'Date':'2020-06-16T08:53:02.000Z'} , '생성된 시간':'2020-06-16T08:53:02.000Z'}]}
이것은 HTTP 요청이 성공했음을 알려줍니다. API를 사용하여 Airtable 데이터베이스에 레코드를 추가했습니다. 이 코드 줄에 대해 더 자세히 논의해 보겠습니다.
먼저 코드에서 HTTP 요청을 할 수 있도록 요청 라이브러리를 가져왔습니다.
그런 다음 두 개의 키와 값이 포함된 사전을 정의했습니다. 하나는 인증 키를 저장하고 다른 하나는 웹 서버에 보내는 콘텐츠 유형을 지정하는 것입니다. 이것은 Airtable API에 요청하기 위해 보내야 하는 헤더입니다.
다음으로 POST 요청과 함께 보내려는 데이터를 저장하는 data라는 변수를 선언했습니다. 이 경우 데이터베이스에 "Black Decaf Tea"라는 음료를 추가했습니다. 그런 다음 requests.post()
를 사용했습니다. 메서드를 사용하고 헤더와 데이터를 매개변수로 지정하여 Airtable API에 POST 요청을 할 수 있었습니다.
마지막으로 res.json()
을 사용하여 요청 결과를 JSON 형식으로 출력했습니다. .
HTTP 상태 코드
HTTP 프로토콜은 웹 요청을 할 때 고유한 상태 코드를 반환합니다. 이를 통해 웹 요청이 성공했는지 또는 오류가 발생했는지 확인할 수 있습니다. 404와 같이 이미 몇 가지를 보았을 것입니다.
다음은 Python 요청으로 요청할 때 발생할 수 있는 상태 코드의 참조 목록입니다.
- 1XX:정보
- 2XX:요청이 성공적으로 이루어졌습니다.
- 3XX:요청이 리디렉션되었습니다.
- 4XX:클라이언트 측 오류
- 5XX:서버 측 오류
이러한 상태 코드를 알면 프로그램에 디버깅을 추가할 수 있습니다. 이전의 cat-facts API 예제에서 GET 요청을 가져오겠습니다. 액세스 중인 리소스를 찾을 수 없는 경우 메시지를 인쇄하려고 한다고 가정합니다. 다음 코드를 사용하여 그렇게 할 수 있습니다.
import requestsres =requests.get('https://cat-fact.herokuapp.com/facts')if res.status_code ==200:print("성공")else :print("오류")사전>반환된 코드:성공. 요청의 상태 코드가 200이므로 "성공" 메시지가 콘솔에 인쇄됩니다. 그러나 요청이 실패한 경우(예:잘못된 URL을 지정했을 수 있음) "오류" 메시지가 콘솔에 인쇄되었을 것입니다.
결론
Python 요청 라이브러리를 사용하면 Python에서 HTTP 요청을 할 수 있습니다. 이 가이드에서는 Python 요청 라이브러리를 사용하여 GET 및 POST 요청을 수행하는 방법에 대해 설명했지만 라이브러리를 사용하여 PUT 및 DELETE 요청을 수행할 수도 있습니다.
requests.get()
과 같은 메소드를 사용하는 경우 또는requests.post()
, Python은 액세스하려는 웹 리소스에 요청을 보냅니다. 요청에 헤더와 데이터를 첨부할 수 있으며, 이를 통해 소유한 웹 리소스를 변경하려는 경우 정보를 보낼 수 있습니다.
이제 전문가처럼 Python 요청 라이브러리를 사용할 준비가 되었습니다!