Python 및 요청을 사용하여 API 사용
다음 APIhttps://jsonplaceholder.typicode.com/를 사용합니다. 게시물을 위한 간단한 API입니다.
요구 사항
Python (Python 3.8.2를 사용합니다)
설치 프로젝트
프로젝트를 생성하기 위해 virtualenv 을 사용하여 이 프로젝트를 위한 격리된 파이썬 환경을 생성할 것입니다. 그러나 pyenv 또는 venv 을 사용할 수도 있습니다.
따라서 먼저
virtualenv
를 설치해야 합니다.pip3 install virtualenv
이제 프로젝트 폴더를 만들고 virtualenv를 설정해야 합니다.
# Creating a project folder
mkdir apis-example
cd apis-example
# Creating the virtual environment
virtualenv env
# Activate the virtual environment
source env/bin/activate
# Create our main file
touch main.py
참고: 환경을 종료하려면
deactivate
를 작성하면 됩니다.종속성 설치
HTTP 요청을 하기 위해
requests
모듈을 사용할 것입니다. 다음 명령을 사용하여 이 모듈을 설치할 수 있습니다.pip install requests
다음 명령으로 설치된 종속성을 확인할 수 있습니다.
# Installed dependencies
pip freeze
# The above mentioned command will list something like the following
certifi==2020.6.20
chardet==3.0.4
idna==2.10
requests==2.24.0
urllib3==1.25.10
또한 종속성을 내보낼 수도 있습니다.
pip freeze > requirements.txt
그리고
requirements.txt
파일에서 종속성을 설치합니다.pip install -r requirements.txt
게시물 나열
이제 필요한 모듈이 설치되었으므로 코드 작성을 시작할 수 있습니다. 먼저 API를 사용하는 데 도움이 되는 requests 모듈을 가져와야 합니다.
# main.py
# import section ....
import requests # import python module
import json
# ....
이제 기본 URL을 정의합니다.
# main.py
# Constants section ....
# API base URL
BASE_URL = "https://jsonplaceholder.typicode.com"
좋아요, 모든 게시물을 표시하는
get_all
라는 함수를 생성하겠습니다.# main.py
# Methods section ....
def get_all():
"""
Make a GET request to the API rest to get all the items
"""
url = BASE_URL + "/posts"
response = requests.get(url)
json_result = response.json()
print(json_result)
우리의
main
함수는 다음과 같습니다.# main.py
# import section ....
import sys
# Main section ...
if __name__ == "__main__":
if len(sys.argv)> 1 :
if sys.argv[1] == '--help':
print('Info: ')
print('--help List the options to send an email')
print('--list Show all posts')
print('--show Show a specific post')
print('--create Create a post')
print('--update Update a post')
print('--delete Delete a post')
elif sys.argv[1] == '--list':
print("Listing all posts")
get_all()
else:
print("Please give the type of message to send.")
print("For help execute `python main.py --help`")
터미널에서 다음 명령을 실행하여 기능을 테스트할 수 있습니다.
python main.py --list
# Listing all posts
# [{'userId': x, 'id': x, 'title': 'xxxxxxx', 'body': 'xxxxxxxxxx'}, ....]
게시물 작성
여기서는 POST 요청을 사용하여 게시물을 작성합니다. 먼저
create_post
라는 메서드를 만듭니다.# main.py
# Methods section ....
def create_post():
"""
Make a post request to the API rest to create an item
"""
url = BASE_URL + "/posts"
# Request headers
headers = { "Content-type": "application/json; charset=UTF-8" }
# Request body
body = {
"title": 'foo',
"body": 'bar',
"userId": 1
}
data = json.dumps(body) # parse a dictionary to json string format
response = requests.post(url, headers=headers, data=data)
json_result = response.json()
print(json_result)
기본 기능에 옵션을 추가합니다.
# main.py
# Main section ...
if __name__ == "__main__":
# ....
if len(sys.argv)> 1 :
# if ....
elif sys.argv[1] == '--create':
print("Create a post")
create_post()
else:
# ....
터미널에서 다음 명령을 실행하여 기능을 테스트할 수 있습니다.
python main.py --create
# Create a post
# {'title': 'foo', 'body': 'bar', 'userId': x, 'id': x}
게시물 표시
여기서는 GET 요청을 사용하여 특정 게시물을 보여줍니다.
show_post
라는 메서드를 생성합니다.# main.py
# Methods section ....
def show_post(id=1):
url = BASE_URL + "/posts/" + str(id)
response = requests.get(url)
json_result = response.json()
print(json_result)
기본 기능에 옵션을 추가합니다.
# main.py
# Main section ...
if __name__ == "__main__":
# ....
if len(sys.argv)> 1 :
# if ....
elif sys.argv[1] == '--show':
print("Show a post")
show_post(1)
else:
# ....
터미널에서 다음 명령을 실행하여 기능을 테스트할 수 있습니다.
python main.py --show
# Show a post
# {'userId': x, 'id': x, 'title': 'xxxxxxxxx', 'body': 'xxxxxxxxxx'}
게시물 업데이트
여기서는 PUT 요청을 사용하여 게시물을 업데이트합니다.
update_post
라는 메서드를 생성합니다.# main.py
# Methods section ....
def update_post(id = 1):
"""
Make a post request to the API rest to create an item
"""
url = BASE_URL + "/posts/" + str(id)
# Request headers
headers = { "Content-type": "application/json; charset=UTF-8" }
# Request body
body = {
"title": 'fooz',
"body": 'barz',
"userId": 1,
"id": id
}
data = json.dumps(body) # parse a dictionary to json string format
response = requests.put(url, headers=headers, data=data)
json_result = response.json()
print(json_result)
기본 기능에 옵션을 추가합니다.
# main.py
# Main section ...
if __name__ == "__main__":
# ....
if len(sys.argv)> 1 :
# if ....
elif sys.argv[1] == '--update':
print("Update a post")
show_post(1)
else:
# ....
터미널에서 다음 명령을 실행하여 기능을 테스트할 수 있습니다.
python main.py --update
# Update a post
# {'userId': x, 'id': x, 'title': 'xxxxxxxx', 'body': 'xxxxxxxx'}
게시물 삭제
여기에서는 DELETE 요청을 사용하여 게시물을 업데이트합니다.
delete_post
라는 메서드를 생성합니다.# main.py
# Methods section ....
def delete_post(id = 1):
url = BASE_URL + "/posts/" + str(id)
response = requests.delete(url)
json_result = response.json()
print(json_result)
기본 기능에 옵션을 추가합니다.
# main.py
# Main section ...
if __name__ == "__main__":
# ....
if len(sys.argv)> 1 :
# if ....
elif sys.argv[1] == '--delete':
print("Delete a post")
show_post(1)
else:
# ....
터미널에서 다음 명령을 실행하여 기능을 테스트할 수 있습니다.
python main.py --delete
# Delete a post
# {'userId': x, 'id': x, 'title': 'xxxxxxxxxxx', 'body': 'xxxxxxxxxxx'}
마지막 단어
이 게시물을 읽어주셔서 감사합니다. 이 가이드의 코드here를 찾을 수 있습니다.
Reference
이 문제에 관하여(Python 및 요청을 사용하여 API 사용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/brayvasq/consume-apis-using-python-and-requests-4npg텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)