2019. 3. 9. 18:41ㆍPython/modules
(로고가 필요이상으로 있어 보인다)
GET, POST 요청을 해보자! Requests
Python으로 GET, POST등의 요청을 할 때 뭐가 필요할 까? 기존 Python에 있는 urllib, request를 사용 해도 무방은 하겠지만 다양한 기능을 기원하지 않는다. 할 수는 있으나 손이 많이 갈 것이다. 좀 더 깔끔하게 웹 서버와 요청을 주고 받을 수 있는 모듈이 없을까? 그렇다면 답은 Requests 이다. 이 모듈은 크롤링을 할 때, 백앤드 서버 테스팅을 할 때 자주 함께 사용된다. (API 테스트를 위해서는 Postman 이라는 좋은 프로그램이 있지만, 가끔 테스팅을 자동화 하고 싶을 때 쓴다.)
설치 방법
리눅스 터미널 혹은 윈도우의 명령 프롬포트에서 다음 명령어를 입력한다.
1 | $ pip install requests |
사용 방법
테스트 서버로는 Flask를 사용 하겠다. Flask가 설치 되어 있지 않으면 pip install flask로 설치하자. 아래는 서버 코드이다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | from flask import Flask, request, jsonify app = Flask(__name__) @app.route('/', methods=['GET', 'POST']) def index(): if request.method == 'GET': return jsonify(request.args) # 쿼리 스트링 반환 elif request.method == 'POST': if request.get_json() != None: return jsonify(request.get_json()) # body로 받은 json 그대로 반환 else: return jsonify(request.form) # form으로 받은 값 json 반환 if __name__ == "__main__": app.run(debug=True) | cs |
일단 requests 객체를 반환 받아보자!
requests.get(url)
url에 GET 요청을 보내고, Response 객체를 반환 받는다. params 어트리뷰트에 딕셔너리를 넣어, 쿼리 스트링을 삽입 할 수 있다. Response.text를 통해 반환 내용을 확인 할 수 있다.
어트리뷰트 값으로 다음을 삽입 가능 하다. json과 files를 같이 담을 수 없다.
- json : json 값을 dict 객체로 받는다.
- headers : header 값을 dict 객체로 받는다.
- files : file 값을 File 객체로 받는다.
requests.post(url)
url에 POST 요청을 보내고, Response 객체를 반환 받는다. params 어트리뷰트에 딕셔너리를 넣어, 쿼리 스트링을 삽입 할 수 있다. Response.text를 통해 반환 내용을 확인 할 수 있다.
Response 객체의 속성
Response 객체의 속성은 다음과 같다.
- text : str 객체로 요청의 결과 값을 반환한다. html 문
- encoding : encoding 방식을 반환한다.
- content : binary 형태로 요청의 결과 값을 반환한다.
- status_code : 요청 결과의 status code를 반환 한다.
- headers : 요청 결과의 헤더 값을 반환 한다.
- cookies : 요청 결과의 쿠키 값을 반환 한다.
- json() : 이는 속성은 아니고, json을 dict 객체로 반환받는 함수이다. html을 반환 받을 때는 작동하지 않는다.
간단한 사용법은 다음과 같다. 다음 시간엔 Requests의 Session을 이용하는 법을 알아보겠다!
'Python > modules' 카테고리의 다른 글
Python Image 라이브러리, Pillow (0) | 2019.03.07 |
---|