[Python] 파이썬 클라이언트로 PHP Web Service 간단 호출 Develop Tip

굳이 언급을 하지 않더라도, 최근에는 RESTful API 가 대세입니다.
프런트엔드와 백엔드를 나누는 관문이라고 할 수도 있겠습니다.

그 이전에 물론 SOAP, WebService 등이 있었기는 했었지요.
더 거슬러 올라가면 RPC (Remote Procedure Call) 까지 가기는 합니다.

뭐 아직도 파이썬 기본 라이브러리에 XMLRPC가 존재하는 것은 당연한 것이기도 하겠지요.

암튼 최근에 PHP API 서비스 서버가 있다고 가정하고 파이썬 Client를 작성해 보았습니다.
PHP를 마지막으로 사용한 것이 십년도 훨씬 더 되어 많이 까먹었지만,
그 가락은 거의 유사할 것입니다.


api.php : API 서비스 샘플 코드
api_test.py : API unittest python 샘플 코드
api_uril.py : request 를 이용한 래핑 클래스 등의 유틸 함수

세 개의 파일 입니다.

우선 api.php 파일은 다음과 같이 php가 설치된 곳에서 기동 시켰습니다.

php -S localhost:8888 api.php

그리고 파이썬 코드는 

python api_test.py

하고 동작시키면,
위와 같이 여러 개의 함수를 테스트 하고,
그 결과가 'OK'라고 나오면 단위 테스트에 성공한 것입니다.

다음은 아주 간단한 함수 두 개만 확인을 해 보겠습니다.

파이썬에서 http://localhost:8888/api.php/ping 으로 GET HTTP 메서드로 호출하면,

PHP 코드에서는 
{
 'http_method': 'GET',
 'method': 'ping',
 'success': True,
 'timestamp': 1525240789
}
와 같은 JSON을 만들어 던지는데,
다시 파이썬에서 timestamp를 받아 그 결과를 출력하니,

Server Time: 2018-05-02T14:59:49

라는 것입니다.

이제는 클라이언트에서 JSON으로 HTTP POST 메서드를 이용하여 호출하는 방식입니다.

파이썬에서 

라고 호출하였습니다.

p_json에  JSON 개체를 만들고 'user_id'와 'password'를 넣어 POST로 호출하였습니다.

그러면 api.php에서는

라고 하고,

{
  'input': <= 이곳에는 호출한 JSON을 그대로 넣어 보았습니다. (마음대로 필요한 것으로 대치 하면 되겠지요?)
  'success': true
}

와 같이 만들어 보냈고,

파이썬에서 다시 받은 결과는

{
 'input': {
   'password': '4491b05113f27a8be79efd4742e751655baec099dfc1300e59bd668fdd92e303',
   'user_id': 'admin'},
 'success': True
}

와 같이 잘 받았습니다.

다른 샘플 API도 모두 동일합니다.

물론 full RESTful 로 설계를 한다면,
좀 더 리소스 기반으로 설계를 해야 되겠지요.


이것으로 만약 PHP 서버이고 Python Client 일 때
이용할 수 있는 간단한 샘플을 만들어 보았습니다.

어느 분께는 도움이 되셨기를...

덧글

댓글 입력 영역

구글애드텍스트