通过Unsplash API按ID获取指定图片失败的技术求助
问题分析与解决方案
嘿,我一眼就发现你遇到的问题啦!核心原因是你对Unsplash API里路径参数的使用方式理解错了~
错误点拆解
你构造的URL是:
https://api.unsplash.com/photos/:id?id=nDV6ahWLvEg&client_id=123123123123
这里的:id是API文档里的路径占位符,它的作用是告诉你「这里需要替换成实际的图片ID」,而不是让你把:id保留在URL里,再用?id=xxx的查询参数传值。Unsplash的服务器会把/photos/:id当成一个固定路径,自然找不到对应的资源,所以返回404。
正确的请求方式
你需要直接把:id替换成实际的图片IDnDV6ahWLvEg,然后只保留client_id作为查询参数。正确的URL应该是:
https://api.unsplash.com/photos/nDV6ahWLvEg?client_id=123123123123
验证方法(Python requests示例)
用你熟悉的requests库测试的话,代码应该是这样的:
import requests # 替换成你的真实access key ACCESS_KEY = "123123123123" PHOTO_ID = "nDV6ahWLvEg" # 直接把图片ID拼到路径里 url = f"https://api.unsplash.com/photos/{PHOTO_ID}" # 只传client_id作为查询参数 params = {"client_id": ACCESS_KEY} response = requests.get(url, params=params) if response.status_code == 200: photo_info = response.json() print(f"成功获取图片信息:{photo_info['alt_description']}") else: print(f"请求失败:状态码{response.status_code},响应内容:{response.text}")
同理解决Collections端点的404问题
Collections相关的端点(比如/collections/:id)也是一样的逻辑,把:id替换成实际的收藏夹ID即可,不要用查询参数传递ID。
总结
API文档里用:param格式标记的都是路径参数,需要直接替换成对应的值放到URL路径中;而client_id这类是查询参数,才需要用?key=value的方式传递。
内容的提问来源于stack exchange,提问作者vii




