laravel api 中的响应消息放在哪里?

Where to put response messages in laravel api?

在我的 laravel 5.5 api 中,我有很多回复消息,例如 "You successfully completed some action..".

目前我将它们作为常量存储在控制器中 被使用。我想将它们全部移动到一个位置,这样如果我以后需要更改它们,我就不必在每个控制器中寻找它们。

这个用例的最佳方法是什么?

即使您只支持一种语言,也可以使用翻译文件。

在你的控制器中,你会有这样的东西:

$message = \Lang::get('directory/file.str1');

还有你的翻译文件:

return [
   'str1' => 'You successfully completed some action.',
];

Laravel localization呢?然后将其用作 trans('success-message-key-here')

在您的用例中,我会创建静态函数以相同的方式调用响应。

class ResponseMessage
{
    public static function succesfulResponse()
    {
        return response('successfull', 200);
    }

    public static function failedResponse()
    {
        return response('fail', 400);
    }
}

用例:

...

return ResponseMessage::succesfulResponse();

另一种方法是使用父控制器,它通常只是在您的控制器文件夹中命名为 Controller,您从中扩展。

class controller
{
    public function succesfulResponse()
    {
        return response('successfull', 200);
    }
}

现在您不在静态上下文中,但如果您从静态上下文中扩展,则可以使用这些函数。

class yourController extends Controller
{
    public function get($id) {
        ...

        return $this->succesfulResponse();
    }
}

resource/lang/en 目录中(换句话说 Localization 你可以这样放置你的信息

ApiMessage.php

return [

    'success' => 'success message',

];

然后在你的控制器中你可以这样调用

public function somefunction(Request $request)
    {
        // your logic 
        return response()->json(__('apiMessages.success'));
    }

此处 en 文件夹表示您的本地语言(默认为英语,符号为 en)