python调接口获取token后 作为header传入另一个接口 然后将数据写入doris表
时间: 2025-06-29 12:15:33 浏览: 6
### Python 中调用 API 获取 Token 并将其作为 Header 传递到另一 API
为了实现这一目标,通常分为几个部分来处理:首先通过请求获取访问令牌;其次利用获得的令牌构建带有认证头的新 HTTP 请求发送至目标服务端口;最后解析返回的结果并准备数据插入数据库。
#### 使用 `requests` 库发起 HTTP POST 请求以获取 Token
```python
import requests
from urllib.parse import urljoin
def get_token(api_base_url, auth_endpoint, client_id, secret_key):
"""向指定的身份验证终结点发出POST请求以接收OAuth2.0类型的Token."""
payload = {
'grant_type': 'client_credentials',
'client_id': client_id,
'client_secret': secret_key
}
response = requests.post(url=urljoin(api_base_url, auth_endpoint), data=payload)
access_token = response.json().get('access_token')
return f'Bearer {access_token}'
```
此函数用于从身份验证服务器获取 OAuth2 访问令牌[^1]。注意这里假定使用的是客户端凭证授权方式(client credentials grant),这取决于具体的服务提供商所支持的方式。
#### 构建带 Bearer Token 的 Headers 发送 GET/POST 请求
一旦获得了有效的 Access Token,则可以创建一个新的 headers 字典,在其中加入 Authorization 键值对以便后续请求能够携带上这个 token:
```python
headers = {'Authorization': get_token(API_BASE_URL, AUTH_ENDPOINT, CLIENT_ID, SECRET_KEY)}
response_data = requests.get(target_api_url, headers=headers).json()
```
上述代码片段展示了如何设置头部信息并通过它来进行一次简单的 GET 请求操作。对于不同的业务场景可能还需要调整方法类型 (GET/POST) 和附加其他参数或 body 内容。
#### 插入 JSON 数据到 Apache Doris 表格中
当接收到外部系统的响应之后,下一步就是把所需字段提取出来构造成适合导入的形式。考虑到性能因素以及简化流程的目的,推荐采用批量加载模式而非逐条记录地执行 SQL INSERT 命令。下面给出了一种基于 Pandas DataFrame 结合 PyODPS 工具包的方法论:
```python
import pandas as pd
from pyodps.udf import annotate
from sqlalchemy import create_engine
engine = create_engine(f'doris://{USER}:{PASSWORD}@{HOST}/{DATABASE}')
df = pd.DataFrame(response_data['items'])
# Assuming the actual items are stored under key "items"
@annotate("string->double")
class ParseJsonField(object):
def evaluate(self, json_str_col):
try:
parsed_dict = eval(json_str_col)
return float(parsed_dict["value"])
except Exception as e:
print(e)
return None
df.to_sql(name='your_table_name', con=engine, if_exists='append', index=False)
print("Data successfully inserted into Doris table.")
```
这段脚本先定义了一个自定义 UDF 函数用来转换某些特殊格式的数据列(如果有的话),接着将整个 dataframe 对象直接写入到了远端托管着的目标关系型数据库实例里去完成最终存储动作。
阅读全文
相关推荐













