This commit is contained in:
as2252258@163.com
2021-08-28 01:37:47 +08:00
parent a4823d5d41
commit fc634c94ed
2 changed files with 75 additions and 54 deletions
+2 -2
View File
@@ -24,12 +24,12 @@ class ExceptionHandlerDispatcher implements ExceptionHandlerInterface
{ {
if ($exception->getCode() == 404) { if ($exception->getCode() == 404) {
return $response->withBody(new Stream($exception->getMessage())) return $response->withBody(new Stream($exception->getMessage()))
->withHeader('Content-Type', 'text/html') ->withContentType(Message\Response::CONTENT_TYPE_HTML)
->withStatus(404); ->withStatus(404);
} }
$code = $exception->getCode() == 0 ? 500 : $exception->getCode(); $code = $exception->getCode() == 0 ? 500 : $exception->getCode();
return $response->withBody(new Stream(jTraceEx($exception, null, true))) return $response->withBody(new Stream(jTraceEx($exception, null, true)))
->withHeader('Content-Type', 'text/html') ->withContentType(Message\Response::CONTENT_TYPE_HTML)
->withStatus($code); ->withStatus($code);
} }
+73 -52
View File
@@ -10,73 +10,94 @@ use Psr\Http\Message\ResponseInterface;
*/ */
class Response implements ResponseInterface, \Server\ResponseInterface class Response implements ResponseInterface, \Server\ResponseInterface
{ {
use Message; use Message;
public int $statusCode = 200; public int $statusCode = 200;
public string $reasonPhrase = ''; public string $reasonPhrase = '';
const CONTENT_TYPE_JSON = 'application/json;charset=utf-8';
const CONTENT_TYPE_HTML = 'text/html;charset=utf-8';
const CONTENT_TYPE_STREAM = 'octet-stream';
const CONTENT_TYPE_XML = 'application/xml;charset=utf-8';
/** /**
* @return int * @param string $type
*/ * @return $this
public function getStatusCode(): int */
{ public function withContentType(string $type): static
// TODO: Implement getStatusCode() method. {
return $this->statusCode; if (!in_array($type, [
} Response::CONTENT_TYPE_HTML, Response::CONTENT_TYPE_JSON,
Response::CONTENT_TYPE_STREAM, Response::CONTENT_TYPE_XML
])) {
throw new \Exception('Wrong content type.');
}
return $this->withHeader('Content-Type', $type);
}
/**
* @param int $code /**
* @param string $reasonPhrase * @return int
* @return static */
*/ public function getStatusCode(): int
public function withStatus($code, $reasonPhrase = ''): static {
{ // TODO: Implement getStatusCode() method.
return $this->statusCode;
}
/**
* @param int $code
* @param string $reasonPhrase
* @return static
*/
public function withStatus($code, $reasonPhrase = ''): static
{
$this->statusCode = $code; $this->statusCode = $code;
$this->reasonPhrase = $reasonPhrase; $this->reasonPhrase = $reasonPhrase;
return $this; return $this;
} }
/** /**
* @return string * @return string
*/ */
public function getReasonPhrase(): string public function getReasonPhrase(): string
{ {
// TODO: Implement getReasonPhrase() method. // TODO: Implement getReasonPhrase() method.
return $this->reasonPhrase; return $this->reasonPhrase;
} }
/** /**
* @param $value * @param $value
* @return ResponseInterface * @return ResponseInterface
*/ */
public function withAccessControlAllowHeaders($value): ResponseInterface public function withAccessControlAllowHeaders($value): ResponseInterface
{ {
return $this->withHeader('Access-Control-Allow-Headers', $value); return $this->withHeader('Access-Control-Allow-Headers', $value);
} }
/** /**
* @param $value * @param $value
* @return ResponseInterface * @return ResponseInterface
*/ */
public function withAccessControlRequestMethod($value): ResponseInterface public function withAccessControlRequestMethod($value): ResponseInterface
{ {
return $this->withHeader('Access-Control-Request-Method', $value); return $this->withHeader('Access-Control-Request-Method', $value);
} }
/** /**
* @param $value * @param $value
* @return ResponseInterface * @return ResponseInterface
*/ */
public function withAccessControlAllowOrigin($value): ResponseInterface public function withAccessControlAllowOrigin($value): ResponseInterface
{ {
return $this->withHeader('Access-Control-Allow-Origin', $value); return $this->withHeader('Access-Control-Allow-Origin', $value);
} }
} }