기술 공유: 1688API 인터페이스를 봉인하는 구체적인 단계

    1688API 인터페이스를 캡슐화하려면 네트워크 요청 및 데이터 상호 작용을 위해 Python의 요청 라이브러리를 사용할 수 있습니다. 다음은 Taobao API 인터페이스를 캡슐화하기 위한 기본 단계입니다.

1. 먼저 1688 오픈 플랫폼에서 API 인터페이스 권한을 신청하고 appkey, appsecret 등 필요한 정보를 얻습니다.

2. API 인터페이스를 캡슐화할 Python 클래스를 생성하고 클래스 이름은 TaobaoAPI입니다.

3. 1688API 클래스에서 다음 특성을 정의합니다.

- 요청 인터페이스의 URL
- 요청에 필요한 매개변수
- appkey 및 appsecret과 같은 확인 정보

4. 1688API 클래스에서 다음 메서드를 정의합니다.

- get_access_token(): 인터페이스를 인증하고 액세스 토큰을 가져옵니다.
- invoke_api(api_name, **kwargs): API 인터페이스를 호출하고 API 응답 결과를 반환합니다.

get_access_token() 메서드에서 요청 라이브러리를 사용하여 액세스 토큰을 얻기 위해 1688 인터페이스에 요청을 보낼 수 있습니다. invoke_api() 메서드에서 API 인터페이스는 요청 라이브러리로 캡슐화되어 API 인터페이스에 대한 호출을 실현할 수 있습니다 .

예를 들어:

```python
import requests
import time
import hashlib

class TaobaoAPI:
    def __init__(self, appkey, appsecret):
        self.appkey = appkey
        self.appsecret = appsecret
        self.session = requests.Session()
        self.session.headers.update({'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8'})
        self.session.params.update({'app_key': self.appkey})
        self.url = "https://eco.taobao.com/router/rest"
        
    def _sign(self, params):
        params = dict(sorted(params.items()))
        query = self.appsecret
        for key in params:
            query += str(key) + str(params[key])
        query += self.appsecret
        return hashlib.md5(query.encode('utf-8')).hexdigest().upper()

    def get_access_token(self):
        try:
            data = {
                'grant_type': 'client_credentials',
                'client_id': self.appkey,
                'client_secret': self.appsecret
            }
            res = self.session.post('https://oauth.taobao.com/token', data=data).json()
            if 'access_token' not in res:
                print(res)
                return None
            token = res['access_token']
            self.session.params.update({
                'access_token': token,
                'timestamp': time.strftime('%Y-%m-%d %H:%M:%S', time.localtime()),
                'v': '2.0',
                'sign_method': 'md5'
            })
            return token
        except Exception as e:
            print(str(e))
            return None

    def invoke_api(self, api_name, **kwargs):
        params = {
            'method': api_name,
            'timestamp': time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())
        }
        params.update(kwargs)
        params['sign'] = self._sign(params)
        res = self.session.post(self.url, data=params).json()
        return res
```

위의 1688API 클래스를 사용하면 1688API 인터페이스를 쉽게 캡슐화할 수 있습니다. 예를 들어:

```python
appkey = 'your_appkey'
appsecret = 'your_appsecret'

api = TaobaoAPI(appkey, appsecret)
token = api.get_access_token()

res = api.invoke_api('taobao.tbk.item.info.get', fields='item_id,title,coupon_click_url', num_iids='12345')
print(res)
```

호출 예

<?php

// 请求示例 url 默认请求参数已经URL编码处理
// 本示例代码未加密secret参数明文传输,若要加密请参考:https://open.…….cn/help/demo/sdk/demo-sign.php
$method = "GET";
$url = "https://api-gw.…….cn/1688/item_get/?key=<您自己的apiKey>&secret=<您自己的apiSecret>&num_iid=610947572360";
$curl = curl_init();
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST,FALSE);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER,FALSE);
curl_setopt($curl, CURLOPT_FAILONERROR, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HEADER, true);
curl_setopt($curl, CURLOPT_ENCODING, "gzip");
var_dump(curl_exec($curl));
?>

Supongo que te gusta

Origin blog.csdn.net/onebound_linda/article/details/130862027
Recomendado
Clasificación