본문 바로가기
백엔드/API

[API] API(Application Programming Interface)와 postman

by eyoo 2022. 6. 17.

API는 OS가 제공하는 기능을 제어할수있게 만든 인터페이스다.

API를 활용하면 동시 개발이 가능하며 그만큼 시간 단축할수있다.

RestFul API(Representational State Transfer)는 API에 URI를 부여해 활용하는 방법이며

아래 3가지를 만족하면 REST라고 할수있다.

  1. 자원(Resource): URL 주소가 있어야 한다.
  2. 행위(Method): 요청하고 응답하는 메소드가 있어야 한다. (GET/POST/DELETE/PUT)
  3. 표현(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를 누른다.

# 잘 작동 되는것을 확인할수있다.




댓글