Я создаю простой api, используя laravel 5.1, чтобы создать строку в таблице и вернуть идентификатор только что созданной строки.Проверка запроса API в Laravel 5.1
Я могу это сделать, но когда дело доходит до проверки, я не уверен, что делать.
например. transaction_request стол id|order_id|customer_id|amount
правила проверки для order_id и Customer_ID просто требуется
мои URI, чтобы запросить это http://localhost:8000/api/v1/transactionRequests?order_id=123&customer_id=&amount=3300
отмечают, что customer_id не определен. пользователь возвращается со следующим json.
{
"error": {
"code": "GEN-WRONG-ARGS",
"http_code": 400,
"message": "{\"customer_id\":[\"The customer_id field is required.\"]}"
}
}
Просмотреть сообщение: with the '\', как это исправить. Я знаю, это потому, что я использую следующий метод проверки в мой контроллер, который выбрасывает исключение
public function validateRequestOrFail($request, array $rules, $messages = [], $customAttributes = [])
{
$validator = $this->getValidationFactory()->make($request->all(), $rules, $messages, $customAttributes);
if ($validator->fails())
{
throw new Exception($validator->messages());
}
}
и я использую улов, чтобы иметь дело с этим следующим
try {
if(sizeof(TransactionRequest::$rules) > 0)
$this->validateRequestOrFail($request, TransactionRequest::$rules);
} catch (Exception $e) {
return $this->response->errorWrongArgs($e->getMessage());
}
errorWrongArgs определяется следующим образом
public function errorWrongArgs($message = 'Wrong Arguments')
{
return $this->setStatusCode(400)->withError($message, self::CODE_WRONG_ARGS);
}
public function withError($message, $errorCode)
{
return $this->withArray([
'error' => [
'code' => $errorCode,
'http_code' => $this->statusCode,
'message' => $message
]
]);
}
Я хочу, чтобы ответ был чистым следующим образом (btw Я использую библиотеку ellipsesynergie/api-response, а не класс ответа по умолчанию, потому что я использую chrisbjr/api-guard)
{
"error": {
"code": "GEN-WRONG-ARGS",
"http_code": 400,
"message": {
"customer_id": "The customer_id field is required."
}
}
}
'вернуть $ this-> response-> errorWrongArgs (json_decode ($ e-> GetMessage(), правда)),' Я json_decode и я получаю "customer_id": [ "поле customer_id «].] Проблема заключается в том, что сообщения хранятся в $ validator-> messages(), который является объектом MessageBag, но я не уверен, как его преобразовать в формат, подходящий для ответа json. – karmendra
Тем не менее, есть ли необходимость дать такое конкретное сообщение в ответе api, могу ли я сделать с одним простым сообщением, например, «проверка не выполнена». – karmendra