angularjs laravel -从http请求获取参数

voase2hg  于 2023-08-02  发布在  Angular
关注(0)|答案(3)|浏览(118)

我想从我的Angular应用程序向我的Laravel API传递多个参数,即用户提供的idchoices数组。

Angular :

HTTP请求:

verifyAnswer: function(params) {
    return $http({
        method: 'GET',
        url: 'http://localhost:8888/api/questions/check',
        cache: true,
        params: {
            id: params.question_id,
            choices: params.answer_choices
        }
    });

字符串

  • 拉拉威尔5:**

routes.php:

$router->get('/api/questions/check/(:any)', 'ApiController@getAnswer');


ApiController.php:

public function getAnswer(Request $request) {
    die(print_r($request));
}


我想我应该在URI中使用:any来指示我将传入任意数量的各种数据结构的参数(id是一个数字,chooses是一个选择的数组)。
我该如何提出这个要求?
[200]:/API/questions/check?choice = choice+1 & choice = choice+2 & choice = choice+3 &id=1

56lgkhnf

56lgkhnf1#

Laravel 8更新:

有时您可能希望在不使用查询字符串的情况下传入参数。
EX

Route::get('/accounts/{accountId}', [AccountsController::class, 'showById'])

字符串
在controllers方法中,您可以使用Request示例并使用route方法访问参数:

public function showById (Request $request)
{
  $account_id = $request->route('accountId')
  
  //more logic here
}


但是如果您仍然想使用某些查询参数,那么您可以使用相同的Request示例,并只使用query方法

Endpoint: https://yoururl.com/foo?accountId=4490
public function showById (Request $request)
{
  $account_id = $request->query('accountId');
  
  //more logic here
}

的字符串

z9smfwbn

z9smfwbn2#

更改此选项:

$router->get('/api/questions/check/(:any)', 'ApiController@getAnswer');

字符串

$router->get('/api/questions/check', 'ApiController@getAnswer');


并使用

echo $request->id;
echo $request->choices;


在你的控制器。不需要指定你将接收参数,当你将Request注入到你的方法中时,它们都将在$request中。

14ifxucb

14ifxucb3#

路线:

1. /api/welcome
2. /api/blueprints/{blueprint_id}
3. /api/blueprints/{blueprint_id}/decorators/{decorator_id}

字符串
中间件:

public function handle(Request $request, Closure $next)
{
    if (!$request->route()->hasParameter('blueprint_id')) {
        return response('This area needs blueprint_id parameter.', Response::HTTP_BAD_REQUEST)
            ->header('Content-Type', 'text/plain')
            ->header('Access-Control-Allow-Origin', '*');
    }

    $blueprintId = $request->route()->parameter('blueprint_id');
    
    $request->merge(['blueprint_id' => $blueprintId]);

    return $next($request);
}


结果如下:

1. [400] This area needs blueprint_id parameter.
2. [200]
3. [200]

相关问题