今日油价:prov 参数填不填?查询油价(选填) vs 查询行情(必填) 的正确姿势
# 今日油价:prov 参数填不填?查询油价(选填) vs 查询行情(必填) 的正确姿势
> 接口/接入点:今日油价 · 查询油价(138-46)/ 查询行情(138-49) · 免费 · 适用人群:已接入或准备接入的开发者 · 阅读时间:约 4 分钟
## TL;DR
- 两个接入点对 `prov` 的必填规则**不一样**:查询油价(138-46)`prov` **选填**,查询行情(138-49)`prov` **必填**。
- 调错接入点却不传 `prov`,查询行情会返回失败(ret_code 非 0)。
- 标准做法:查具体价格传省名到 138-46;查涨跌幅传省名到 138-49。
## Why
这是今日油价最容易踩的坑:两兄弟接口,`prov` 一个可选一个必填。很多开发者照着一个接口的写法去调另一个,结果莫名失败。本文把差异钉死,省得你来回试。
## What
| 接入点 | 地址 | `prov` 必填性 | 用途 |
|--------|------|---------------|------|
| 查询油价(138-46) | `route.showapi.com/138-46` | **选填** | 查具体标号价格 |
| 查询行情(138-49) | `route.showapi.com/138-49` | **必填** | 查涨跌幅与调价日 |
> 差异来自官方文档原文:138-46 的 `prov` 标注「否(选填)」,138-49 的 `prov` 标注「是(必填)」。
## How
**场景 A:查北京 92 号价格(prov 选填,建议传)**
```python
import requests
r = requests.post("https://route.showapi.com/138-46",
data={"appKey": "YOUR_APPKEY", "prov": "北京"}, timeout=10).json()
print(r["showapi_res_body"]["list"][0]["p92"])
```
**场景 B:查北京涨跌幅(prov 必填,不传会失败)**
```python
import requests
r = requests.post("https://route.showapi.com/138-49",
data={"appKey": "YOUR_APPKEY", "prov": "北京"}, timeout=10).json()
body = r["showapi_res_body"]
if body.get("ret_code") != 0:
print("失败:", body) # 多半是 prov 缺失或省名写法不对
else:
print(body["p0"]["change_percent"])
```
cURL 对照:
```bash
# 查询油价(prov 选填)
curl -X POST "https://route.showapi.com/138-46?appKey=YOUR_APPKEY" \
-H "content-type: application/x-www-form-urlencoded" -d "prov=%E5%8C%97%E4%BA%AC"
# 查询行情(prov 必填)
curl -X POST "https://route.showapi.com/138-49?appKey=YOUR_APPKEY" \
-H "content-type: application/x-www-form-urlencoded" -d "prov=%E5%8C%97%E4%BA%AC"
```
## 返回示例与解析
查询行情若不传 `prov`(必填项缺失),`ret_code` 非 0,业务失败不计费;务必在调用前确认你用的是哪个接入点、是否传了省名。
## 进阶/边界
- **省名写法**:用文档示例的「北京」「广西」这种标准省名;生僻写法可能匹配不到。
- **省略 prov 的行为**:查询油价标注选填,省略时是否返回全部 31 省以实际返回为准,标准用法仍建议传省名。
## FAQ
**Q:为什么我照着查询油价的代码调查询行情报错了?**
A:两个接入点 `prov` 必填规则不同——查询行情(138-49)的 `prov` 是必填,不传会失败。
**Q:怎么判断该用哪个接入点?**
A:要具体标号价格用 138-46(查询油价);要涨跌幅和调价日用 138-49(查询行情)。
**Q:省名写「北京市」还是「北京」?**
A:以文档示例为准,用「北京」这类标准写法。
## 相关能力 / 下一步阅读
- [今日油价:涨跌幅怎么查?「查询行情」接入点的调价日与涨跌率实战](https://www.showapi.com/guides/oilprice-trend-138)
- [今日油价:全国 31 省油价怎么一次性拉全?省份枚举与批量设计](https://www.showapi.com/guides/oilprice-province-list-138)
- **本系列共 13 篇**:查看[今日油价开发指南总目录](https://www.showapi.com/guides/oilprice-guides-138)