API는 OS가 제공하는 기능을 제어할수있게 만든 인터페이스다.
API를 활용하면 동시 개발이 가능하며 그만큼 시간 단축할수있다.
RestFul API(Representational State Transfer)는 API에 URI를 부여해 활용하는 방법이며
아래 3가지를 만족하면 REST라고 할수있다.
- 자원(Resource): URL 주소가 있어야 한다.
- 행위(Method): 요청하고 응답하는 메소드가 있어야 한다. (GET/POST/DELETE/PUT)
- 표현(Message): JSON (JavaScript Object Notation), XML등의 표현
# 메소드는 가져오기(GET), 보내기(POST), 삭제하기(DELETE), 업데이트(PUT) 등이 있다.
# JSON은 딕셔너리 형태와 큰 따옴표로 표현된다. 예시: { "users" : { "name" : "sol" } }
URL의 구성과 명칭
예시: http://abc.com:3000/main?id=HTML&page=12
- http는 프로토콜
- abc.com은 호스트(도메인)
- :3000은 포트
- /main은 경로 (path)
- ?id=HTML&page=12는 query string
API를 만들기 위해서는 비주얼 스튜디오 코드의 커맨드 프롬프트에서
3.8버전의 파이썬이 사용되는 가상환경을 만들고
flask와 flask-restful을 설치한다.
conda create -n flask3.8 python=3.8
pip install flask flask-restful
# flask는 파이썬으로 작성된 마이크로 웹 프레임워크 중의 하나다.
기본적인 API 실행코드를 살펴보자.
from flask import Flask
app = Flask(__name__)
# API 가 있어야 한다. 아래 코드가 API
@app.route('/', methods = ['GET'])
def hello_world():
return 'Hello World'
if __name__ == '__main__':
app.run
# 골뱅이를 '@' 사용하여 API 작성코드를 시작한다.
# ' / '는 경로를 나타낸다.
# methods 파라미터를 통해 어떤 메소드를 사용할지 알려준다.
# 밑의 함수식을 사용하여 메세지를 전달한다.
# Resource, Method, Message를 만족하는 RestFul API이다.
터미널에 python app.py를 입력하여 실행하자.
(flask3.8) C:\Users\uosc2\Documents\GitHub\flask-api-server>python app.py
* Serving Flask app 'app' (lazy loading)
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: off
* Running on http://127.0.0.1:5000 (Press CTRL+C to quit)
127.0.0.1 - - [17/Jun/2022 17:51:19] "GET / HTTP/1.1" 200 -
나타난 URL을 클릭하여 웹에 남겨진 Hello World를 확인할수있다.

POST 메소드로 두개의 수를 받으면 더해주는 API를 만들어보자
from flask import Flask, jsonify, request
from http import HTTPStatus
app = Flask(__name__)
@app.route('/add_two_nums', methods = ['POST'])
def add():
# 클라이언트로부터 두 수를 받는다.
data = request.get_json()
ret = data['x'] + data['y']
result = {"result" : ret}
return jsonify(result)
if __name__ == '__main__' :
app.run()
# 127.0.01:5000 에서 /add_two_nums 경로에 해당된다.
# get_json 함수로 클라이언트로 입력된 데이터를 받아올수있다. (json은 딕셔너리 형태로 되어있다.)
# jsonify 함수로 결과값을 받는다.
POST 메소드는 웹으로 바로 확인할수 없다.

Postman을 활용하면 쉽게 결과를 확인하며 테스트할수있다.
Postman 설치:
https://www.postman.com/downloads/
Download Postman | Get Started for Free
Try Postman for free! Join 20 million developers who rely on Postman, the collaboration platform for API development. Create better APIs—faster.
www.postman.com
포스트맨 설치하고 실행한 뒤 로그인 후 새로운 콜렉션을 생성하자.

Add request로 새로운 리퀘스트를 만든다.

메소드를 POST로 바꿔준다.

경로를 지정한다.

POST는 Body의 raw에서 json을 선택한 후 입력해야 한다.

값을 딕셔너리 형태로 입력하고 send를 누른다.

# 잘 작동 되는것을 확인할수있다.
'백엔드 > API' 카테고리의 다른 글
| [API] AWS IAM 사용자 설정 (0) | 2022.06.23 |
|---|---|
| [API] 인증토큰 JWT, 로그인과 로그아웃: JWTManager, create_access_token, token_in_blocklist_loader (0) | 2022.06.20 |
| [API] 로그인 API: check_password (0) | 2022.06.20 |
| [API] 유저정보 저장: 비밀번호 암호화, 이메일 형식 확인, 예외처리 (0) | 2022.06.20 |
| [API] 파이썬에서 MySQL 연결 후 Restful API 생성 (0) | 2022.06.17 |
댓글