照片列表接口
接口说明
获取照片列表。支持分页查询和相册筛选,会过滤私密相册的照片,并对加密相册的照片进行特殊处理。
- 接口URL:
/api/photos/index
- 请求方法:
POST
- 权限要求: 支持未登录访问,但登录后可查看更多信息
请求参数
参数名 | 类型 | 必填 | 说明 | 示例值 |
---|---|---|---|---|
page_numer | number | 否 | 页码,不传则返回全部数据 | 1 |
page_size | number | 否 | 每页条数,不传则返回全部数据 | 10 |
album_path | string | 否 | 相册路径 | "travel" |
album_password | string | 否 | 相册访问密码,访问加密相册时必填 | "123456" |
响应结构
typescript
interface Response {
code: number; // 状态码
message: string; // 响应消息
data?: {
list: Array<{
photo_id: number; // 照片ID
photo_title: string; // 照片标题
photo_description: string;// 照片描述
photo_url: string; // 照片URL
photo_thumbnail: string; // 缩略图URL
photo_date: string; // 拍摄日期
photo_album_id: number; // 所属相册ID
album_title: string; // 相册标题
album_path: string; // 相册路径
album_private: number; // 相册是否私密(0:否, 1:是)
album_password?: string; // 相册访问密码(加密相册才有)
}>;
total: number; // 总条数
};
}
响应示例
普通相册照片
json
{
"code": 0,
"message": "success",
"data": {
"list": [
{
"photo_id": 1,
"photo_title": "美丽风景",
"photo_description": "旅行中拍摄的风景照",
"photo_url": "https://example.com/photo.jpg",
"photo_thumbnail": "https://example.com/thumbnail.jpg",
"photo_date": "2024-01-01",
"photo_album_id": 1,
"album_title": "旅行相册",
"album_path": "travel",
"album_private": 0
}
],
"total": 1
}
}
加密相册照片(密码错误)
json
{
"code": 401,
"message": "需要密码访问",
"data": {
"list": [
{
"photo_id": 2,
"photo_title": "加密照片",
"photo_description": "此照片需要密码访问",
"photo_thumbnail": "https://example.com/placeholder.jpg",
"photo_date": "2024-01-01",
"photo_album_id": 2,
"album_title": "私密相册",
"album_path": "private",
"album_private": 0,
"album_password": "******"
}
],
"total": 1
}
}
特殊说明
分页机制
- 当
page_numer
和page_size
都不传时,返回全部数据 - 分页从第1页开始,每页大小由
page_size
决定 - 返回数据按照照片ID降序排列(最新的照片在前)
访问控制
- 私密相册的照片会被过滤,不会出现在返回列表中
- 加密相册的照片需要提供正确的相册密码才能查看原图
- 未提供密码或密码错误时,加密相册的照片只显示缩略图
- 登录用户可以查看更多照片信息
错误码说明
错误码 | 说明 | 处理建议 |
---|---|---|
0 | 成功 | - |
401 | 需要密码访问 | 提供正确的相册密码 |
500 | 服务器错误 | 请联系管理员 |
调用示例
基础查询
typescript
const response = await fetch('/api/photos/index', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
page_numer: 1,
page_size: 10
})
});
访问加密相册
typescript
const response = await fetch('/api/photos/index', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
page_numer: 1,
page_size: 10,
album_path: 'private',
album_password: '123456'
})
});