状态码
200 OK - 对成功的 GET、PUT、PATCH 或 DELETE 操作进行响应。也可以被用在不创建新资源的 POST 操作上
201 Created - 对创建新资源的 POST 操作进行响应。应该带着指向新资源地址的 Location 头
202 Accepted - 服务器接受了请求,但是还未处理,响应中应该包含相应的指示信息,告诉客户端该去哪里查询关于本次请求的信息
204 No Content - 对不会返回响应体的成功请求进行响应(比如 DELETE 请求)
304 Not Modified - HTTP缓存header生效的时候用
400 Bad Request - 请求异常,比如请求中的body无法解析
401 Unauthorized - 没有进行认证或者认证非法
403 Forbidden - 服务器已经理解请求,但是拒绝执行它
404 Not Found - 请求一个不存在的资源
405 Method Not Allowed - 所请求的 HTTP 方法不允许当前认证用户访问
410 Gone - 表示当前请求的资源不再可用。当调用老版本 API 的时候很有用
415 Unsupported Media Type - 如果请求中的内容类型是错误的
422 Unprocessable Entity - 用来表示校验错误
429 Too Many Requests - 由于请求频次达到上限而被拒绝访问
数据响应格式
https://api.larabbs.com/
Accept: application/prs.larabbs.v1+json
Accept: application/prs.larabbs.v1+xml
数据描述
'message' => ':message', // 错误的具体描述
'errors' => ':errors', // 参数的具体错误描述,422 等状态提供
'code' => ':code', // 自定义的异常码
'status_code' => ':status_code', // http状态码
'debug' => ':debug', // debug 信息,非生产环境提供
------
{
"message": "422 Unprocessable Entity",
"errors": {
"name": [
"姓名 必须为字符串。"
]
},
"status_code": 422
}
-----
{
"message": "您无权访问该订单",
"status_code": 403
}
调用频率限制
为了防止服务器被攻击,减少服务器压力,需要对接口进行合适的限流控制,需要在响应头信息中加入合适的信息,告知客户端当前的限流情况
X-RateLimit-Limit :100 最大访问次数
X-RateLimit-Remaining :93 剩余的访问次数
X-RateLimit-Reset :1513784506 到该时间点,访问次数会重置为 X-RateLimit-Limit
超过限流次数后,需要返回 429 Too Many Requests 错误。
微信
同意授权,获取code
https://open.weixin.qq.com/connect/oauth2/authorize?appid=*****&redirect_uri=http://****.test&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect
通过code 获取 access_acount 5分钟有效
https://api.weixin.qq.com/sns/oauth2/access_token?appid=*********&secret=*********&code=*********=authorization_code
$accessToken = '12_Z39P8ANcGwUs3c6QBsF8za179zzY4GtH0hfXR9O3JOUgfYOFSVIygs6ZHgL-fzyMURMN34F05gE7_ZlHcOcM2g';$openID = 'oNUlL03piNvdJtOXBC2ERX-dLFBk';$driver = Socialite::driver('weixin');$driver->setOpenId($openID);$oauthUser = $driver->userFromToken($accessToken);
'rate_limits' => [
'access' => [ 'expirs' => env('PATE_LIMITES_EXPIRS' , 1), 'limit' => env('PATE_LIMITES' , 60), ], // 登录相关 'sign' => [ 'expirs' => env('SIGN_RATE_LIMITS_EXPIRES' , 1), 'limit' => env('SIGN_RATE_LIMITS' , 10), ],
], 'auth' => [ 'jwt' => 'Dingo\Api\Auth\Provider\JWT', ], ];
passport
client_id:1
client_secret: Mao91yzgcWKo2bIYatBadUZNkUNkgUt23KzztP3A
本文由 邓尘锋 创作,采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
最后编辑时间为: May 4, 2019 at 11:31 am