跳转至

API V1

API V1

Chevereto API v1(也被称为Bridge API)允许访客上传图片到你的Chevereto驱动的网站上。被称为Bridge API的是因为它与Chevereto 2.X版本中的内容几乎完全一样而且还是向未来版本二的一个过渡。

API的V1版本没有速率限制,但是会受到仪表盘中设置的最大上传限制的影响。因此,你应该只在自己的应用程序或脚本使用此API

API密匙

API版本一使用一个API密匙,你可以在仪表盘 > 设置 > API里面设置。

调用API

请求方法

API v1调用可以使用POST或GET请求方法来完成,但是由于GET请求受URL允许的最大长度限制,您应该更多的使用POST请求方法。

请求网址
http://mysite.com/api/1/<action>/
参数

密匙: API版本一的密匙,它可以在你的管理员设置面板进行设置。

操作: 你想做什么 [values: upload].

来源: 图像URL或base64编码的图像字符串。您还可以在请求中使用文件["source"]。

格式: 设置返回格式[values: json (默认的), redirect, txt].

示例调用

GET http://mysite.com/api/1/upload/?key=12345&source=http://somewebsite/someimage.jpg&format=json

注意:注意:上传本地文件时一定要使用POST。Url编码可能会由于编码的字符或仅仅由于GET请求的Url请求长度限制而更改base64源。

API响应

API v1的响应将根据参数的格式不同而有所不同:。

json 以JSON格式显示所有图像上传信息。[默认]

txt 直接返回图片的链接,以txt/plain的格式

重定向 重定向到图片的链接(应该是跳转的意思)

当使用json的方式时,API响应将会有头状态代码,允许您轻松地注意请求是否成功。它还将输出status_txtstatus_code属性。

示例响应(json)

{
        "status_code": 200,
        "success": {
            "message": "image uploaded",
            "code": 200
        },
        "image": {
            "name": "example",
            "extension": "png",
            "size": 53237,
            "width": 1151,
            "height": 898,
            "date": "2014-06-04 15:32:33",
            "date_gmt": "2014-06-04 19:32:33",
            "storage_id": null,
            "description": null,
            "nsfw": "0",
            "md5": "c684350d722c956c362ab70299735830",
            "storage": "datefolder",
            "original_filename": "example.png",
            "original_exifdata": null,
            "views": "0",
            "id_encoded": "L",
            "filename": "example.png",
            "ratio": 1.2817371937639,
            "size_formatted": "52 KB",
            "mime": "image/png",
            "bits": 8,
            "channels": null,
            "url": "http://127.0.0.1/images/2014/06/04/example.png",
            "url_viewer": "http://127.0.0.1/image/L",
            "thumb": {
                "filename": "example.th.png",
                "name": "example.th",
                "width": 160,
                "height": 160,
                "ratio": 1,
                "size": 17848,
                "size_formatted": "17.4 KB",
                "mime": "image/png",
                "extension": "png",
                "bits": 8,
                "channels": null,
                "url": "http://127.0.0.1/images/2014/06/04/example.th.png"
            },
            "medium": {
                "filename": "example.md.png",
                "name": "example.md",
                "width": 500,
                "height": 390,
                "ratio": 1.2820512820513,
                "size": 104448,
                "size_formatted": "102 KB",
                "mime": "image/png",
                "extension": "png",
                "bits": 8,
                "channels": null,
                "url": "http://127.0.0.1/images/2014/06/04/example.md.png"
            },
            "views_label": "views",
            "display_url": "http://127.0.0.1/images/2014/06/04/example.md.png",
            "how_long_ago": "moments ago"
        },
        "status_txt": "OK"
    }

示例响应(txt)

http://127.0.0.1/images/2014/06/04/example.png

上传到用户的解决方案

API V1没有办法上传与给定用户相关联的图像,但是你可以覆盖默认的API,将默认的app/routes/route.api.php的文件复制到app/routes/overrides/route.api.php文件夹。

把这个

CHV\Image::uploadToWebsite($source);

改成这个(将juanito更换成目标用户名或用户id)

// 这将会为juanito用户上传图片
CHV\Image::uploadToWebsite($source, 'juanito');

通过这一步,/api路径(来源于app/routes/overrides/route.api.php)将以该用户的名称上载图像。

使用不同的API密匙

如果你想在这个新的自定义API中使用不同的API密匙,只需将这个:

!G\timing_safe_compare(CHV\getSetting('api_v1_key'), $_REQUEST['key'])

修改成

!G\timing_safe_compare('NowThisIsAnotherAPIKEY!', $_REQUEST['key'])

多个API

你只需要在app/loader.php上执行一些编辑,就可以使用多个api 由于此文件处理一些预路径,您需要将自定义路径添加到所有提到api的条件中。