OpenWeatherMap提交气象测量数据返回204 No Content问题咨询
OpenWeatherMap Stations API 提交测量数据返回204问题说明
你收到的204 No Content是该接口的正常成功响应,该接口设计上在成功接收测量数据后不会返回任何响应体,只要拿到204状态码就代表API密钥、站点ID、请求格式全部校验通过,数据已经提交到OWM的处理队列。
你观测到的数分钟到数小时的查询延迟是OWM的常规机制,成因如下:
- 后台校验队列缓冲:所有上传的测量数据首先会进入后台校验队列,系统会自动完成数据合法性校验,包括数值范围合理性、和周边站点观测值交叉验证、时间戳有效性等,只有校验通过的数据才会写入公开可查询的数据库
- 读写集群同步延迟:提交接口和查询接口分别对接不同的存储集群,校验完成的数据需要跨集群同步到所有公开查询节点,同步过程本身存在延迟,流量高峰时段延迟最长可达数小时
操作建议
- 不要重复提交同一时间戳、同一站点的测量数据,重复提交会被判定为无效请求,甚至触发接口限流
- 若需要验证提交结果,建议间隔至少1小时后再调用查询接口
你提交请求的curl示例(格式无误):
curl --location --request POST 'http://api.openweathermap.org/data/3.0/measurements?appid=<my_api_key>' \ --header 'Content-Type: application/json' \ --data-raw '[ { "station_id": "<my_station_id>", "dt": 1631613233, "temperature": 20.0, "wind_speed": 1.2, "wind_gust": 3.4, "pressure": 1021, "humidity": 87, "rain_1h": 2, "clouds": [ { "condition": "NSC" } ] } ]'
你收到的成功响应头示例:
{ "Server": "openresty", "Date": "Tue, 14 Sep 2021 09:53:54 GMT", "Connection": "keep-alive", "Access-Control-Allow-Origin": "*", "Access-Control-Allow-Credentials": "true", "Access-Control-Allow-Methods": "GET, POST" }
内容的提问来源于stack exchange,提问作者Steini
相关产品推荐
相关产品推荐

