网站开发的文献,找项目去哪个平台,海南人才在线,演示网站怎么做一#xff0c;新增接口返回码配置文件
在config中新增配置文件apicode.php
?phpreturn [
apicodes[/*** Message(OK)* 对成功的 GET、PUT、PATCH 或 DELETE 操作进行响应。也可以被用在不创建新资源的 POST 操作上*/HTTP_OK 200,/*** Message(新增接口返回码配置文件
在config中新增配置文件apicode.php
?phpreturn [
apicodes[/*** Message(OK)* 对成功的 GET、PUT、PATCH 或 DELETE 操作进行响应。也可以被用在不创建新资源的 POST 操作上*/HTTP_OK 200,/*** Message(Created)* 对创建新资源的 POST 操作进行响应。应该带着指向新资源地址的 Location 头*/CREATED 201,/*** Message(Accepted)* 服务器接受了请求但是还未处理响应中应该包含相应的指示信息告诉客户端该去哪里查询关于本次请求的信息*/ACCEPTED 202,/*** Message(No Content)* 对不会返回响应体的成功请求进行响应比如 DELETE 请求*/NO_CONTENT 203,/*** Message(Not Modified)* HTTP缓存header生效的时候用*/NOT_MODIFIED 304,/*** Message(Temporary Redirect)* 对应当前请求的响应可以在另一个 URI 上被找到客户端应该保持原有的请求方法进行请求*/TEMPORARY_REDIRECT 307,/*** Message(Bad Request)* 请求异常比如请求中的body无法解析*/BAD_REQUEST 400,/*** Message(Unauthorized)* 没有进行认证或者认证非法*/UNAUTHORIZED 401,/*** Message(Forbidden)* 服务器已经理解请求但是拒绝执行它*/FORBIDDEN 403,/*** Message(Not Found)* 请求一个不存在的资源*/NOT_FOUND 404,/*** Message(Method Not Allowed)* 所请求的 HTTP 方法不允许当前认证用户访问*/METHOD_NOT_ALLOWED 405,/*** Message(Gone)* 表示当前请求的资源不再可用。当调用老版本 API 的时候很有用*/GONE 410,/*** Message(Unsupported Media Type)* 如果请求中的内容类型是错误的*/UNSUPPORTED_MEDIA_TYPE 415,/*** Message(Unprocessable Entity)* 用来表示校验错误*/UNPROCESSABLE_ENTITY 422,/*** Message(Too Many Requests)* 由于请求频次达到上限而被拒绝访问*/TOO_MANY_REQUESTS 429,/*** Message(Internal Server Error)* 服务器遇到了一个未曾预料的状况导致了它无法完成对请求的处理*/SERVER_ERROR 500,/*** Message(Bad Gateway)* 作为网关或者代理工作的服务器尝试执行请求时从上游服务器接收到无效的响应*/BAD_GATEWAY 502,/*** Message(Service Unavailable)* 由于临时的服务器维护或者过载服务器当前无法处理请求。这个状况是临时的并且将在一段时间以后恢复。如果能够预计延迟时间那么响应中可以包含一个 Retry-After* 头用以标明这个延迟时间内容可以为数字单位为秒或者是一个 HTTP 协议指定的时间格式。如果没有给出这个 Retry-After 信息那么客户端应当以处理 500 响应的方式处理它*/SERVICE_UNAVAILABLE 50,/*** Message(Gateway Timeout)*/GATEWAY_TIMEOUT 504,/*** Message(HTTP Version Not Supported)*/HTTP_VERSION_NOT_SUPPORTED 505]
];
二新增接口统一响应封装trait
?phpnamespace App\traits;use Illuminate\Support\Facades\Response;trait ApiResponse
{/*** var int*/protected $statusCode 200;/*** return mixed*/public function getStatusCode(){return $this-statusCode;}/*** param $statusCode* return $this*/public function setStatusCode($statusCode){$this-statusCode $statusCode;return $this;}/*** param $data* param array $header* return mixed*/public function respond($data, $header []){return Response::json($data, $this-getStatusCode(), $header);}/*** param $status* param array $data* param null $code* return mixed*/public function status($status, array $data, $code null){if ($code) {$this-setStatusCode($code);}$status [status $status,code $this-statusCode];$data array_merge($status, $data);return $this-respond($data);}/*** param $message* param int $code* param string $status* return mixed*/public function error($message, $code BAD_REQUEST){return $this-status(error, [message $message,code config(apicode.apicodes..$code)],config(apicode.apicodes..$code));}/*** param $message* param string $status* return mixed*/public function message($message, $status success){return $this-status($status, [message $message]);}/*** param $data* param string $status* return mixed*/public function success($data, $status success){return $this-status($status, compact(data));}
}
三使用
先 use ApiResponse;
use ApiResponse;
public function login(Request $request){$input $request-only(account, password);//此处可以自己查数据库判断是否用户名和密码正确$user User::query()-where([account $input[account]])-firstOrFail();//生成token两种方式//$token Auth::guard(api)-fromUser($user);$token JWTAuth::fromUser($user);//dd($token);die;$data[token]bearer .$token;$data[user]$user;return $this-success($data);}四接管系统异常返回
首先我们在app/Exceptions目录新建一个ExceptionHandler.php继承自同目录下的Handler.php代码如下 在render方法里我们根据.env文件中的APP_DEBUG来判断如果是调试模式我们还是按照默认方式来渲染错误如果是非调试模式我们就返回JSON格式的信息
?phpnamespace App\Exceptions;
use App\traits\ApiResponse;
class ExceptionHandler extends Handler
{use ApiResponse;public function render($request, \Throwable $exception){if (env(APP_DEBUG)) {return parent::render($request, $exception);}return $this-error($exception-getMessage(),UNAUTHORIZED);}
}
然后我们在bootstrap/app.php中使用我们自定义的异常处理类ExceptionHandler替换掉默认的Handler类
$app-singleton(Illuminate\Contracts\Debug\ExceptionHandler::class,//App\Exceptions\Handler::classApp\Exceptions\ExceptionHandler::class
);