当前位置: 首页 > 知识库问答 >
问题:

在lumen api中从Guzzle post请求中获取form_params数据

苗阳文
2023-03-14
public function insert(Request $request)
    { 
        $domain = Config::get('url.gcr_api'); // gcr_api is defined in app/config/url.php
        $url = $domain . "/api/v1/campaign/insert"; 

        $campaign_name =  $request->input('campaign_name');
        $campaign_provider =  $request->input('campaign_provider');

        $client = new Client;
        $response = $client->request('POST', $url , [
                                'headers' => [
                                    'X-XSRF-TOKEN' => csrf_token(),
                                ],
                                'form_params' => [
                                    'name' => $campaign_name, 
                                    'bank_id' => $campaign_provider,
                                ]
                            ]
                    );

        $data = json_decode($response->getBody(), true);
        return $data;

    }
}

下面是上述方法调用的lumen api的代码。

public function insert(Request $request) {
        try {
            $campaign_name =  $request->input('campaign_name');
            $campaign_provider =  $request->input('campaign_provider');

            $data = array('name' => $campaign_name, 'bank_id' => $campaign_provider);
            DB::table('campaign')->insert($data); 

            $response = array(
                'status' => 'success',
                'message' => 'Campaign created successfully',
            );        
            return response()->json($response);
        }
        catch(Exception $e) {
            // When query fails. 
            $response = array(
                'status' => 'failed',
                'message' => 'Failed to create campaign',
            );

            return response()->json($response);
        }
    }

每次调用laravel应用程序控制器的insert方法时,我都会得到这个错误:

GuzzleHttp\Exception\ServerException(500)服务器错误:发送http://localhost:8000/api/v1/campaign/insert导致500内部服务器错误响应:

/*$campaign_name =  $request->input('campaign_name');
  $campaign_provider =  $request->input('campaign_provider');

  $data = array('name' => $campaign_name, 'bank_id' => $campaign_provider);
  DB::table('campaign')->insert($data); */

共有1个答案

梁修贤
2023-03-14

您的假设部分正确,它可以访问form_params,但是您试图获取的form_params与实际参数不同:

为了传递paramters,可以使用以下数组:

'form_params' => [
    'name' => $campaign_name, 
    'bank_id' => $campaign_provider,
]

此数组将值设置为$campaign_name,键为'name',并将$campaign_provider设置为bank_id。到目前为止,这段代码没有问题。

$campaign_name =  $request->input('campaign_name');
$campaign_provider =  $request->input('campaign_provider');
$campaign_name =  $request->input('name');
$campaign_provider =  $request->input('bank_id');
 类似资料:
  • 问题内容: 我正在尝试让我的函数返回http get请求,但是,无论如何,它似乎在?scope中丢失了。我对Node.js不熟悉,因此不胜感激 问题答案: 当然,您的日志会返回:您在完成请求之前先进行日志。问题不是范围,而是 异步性 。 是异步的,这就是为什么它将回调作为参数的原因。做您在回调中要做的事情(传递给的):

  • 我尝试做的是从同一个站点发布数据并从它创建一个新的订单(当提交按钮被点击时)。我没有任何信息在我的请求。身体,我怀疑是在我的ejs出了问题,任何反馈是非常感谢的。 我的ejs文件: 和我的js文件:

  • 我从jquery发送如下请求: 在servlet内部,我可以获得参数,但问题是参数包含序列化的表单数据:如下所示: 我知道我可以使用来获取数据,但我想确保--如果他们的方法简单与否?

  • 问题内容: 如何在Jinja2模板中检索请求参数? 问题答案: 我对这个答案有些迟,但是其他解决方案并不能真正解决你使用Flask的问题。 将Flask与Jinja2一起使用的事实使你的情况与其他框架有所不同。Flask实际上使所有Jinja2模板中都可以使用一些全局变量,而无需你将它们显式传递给模板。 在http://flask.pocoo.org/docs/templating/#standa

  • 我正在构建一个Java的grpc服务器,我很难得到请求头。proto文件是使用Pro buf-maven-plugin编译的,基于生成的存根,我无法访问上下文或请求元数据。 我还尝试在消息请求中定义一个键/值列表,希望grpc能够处理头映射,但目前为止没有成功。 知道我怎么能拿到标题吗? 谢谢 我的原型文件内容: 服务器端实现如下所示: 版本请求。getHeadersCount()始终返回0,尽管

  • 问题内容: 这是我在index.html上的代码: 我如何编程test.php以获取在AJAX API中发送的“数据”? 问题答案: 您在这里问一个非常基本的问题。您首先应该阅读一些Ajax教程。只是为了帮助您(假设您知道发送数据的GET和POST方法),数据中的“数据”:函数(数据)中的“数据”与“数据”不同。为了清楚起见,您应该为它们命名不同,如下所示: 这清楚地表明,一个是要通过POST参数