API Laravel 回复而不是另一个 API Laravel

Posted

技术标签:

【中文标题】API Laravel 回复而不是另一个 API Laravel【英文标题】:API Laravel replies instead of an another API Laravel 【发布时间】:2018-07-22 23:26:30 【问题描述】:

我现在用 Laravel 开发了两个小应用程序(两个不同的项目)。

数据库中的第一批订单。此应用程序有一个 API,可通过 GET 返回对象顺序。

例子:

在 Postman 中,我调用:http://payment.oo/api/orders/15。我的 API 对此作出响应,这对我来说没问题。


"id": 15,
"client_name": "Mr Doe",
"price": 330.45,
"created_at": "2018-02-07 14:54:07",
"state_id": 2

api.php中该函数的代码

Route::post('/orders/id', function($id)
        $order = Order::find($id);

        if($order)
            return response()
                ->json($order);
        
        else
            abort(404);
        
    );

第二个应用商店也订购并调用第一个应用的API来了解支付状态。

所以,在第二个应用程序中,我将支付 ID 存储在数据库中,然后用 Guzzle 调用第一个应用程序的 API,像这样

$order = Order::findOrFail($id);
$client = new Client([
            'base_uri' => 'http://payment.oo/api/',
            // You can set any number of default request options.
            'timeout'  => 2.0,
        ]);
$response = $client->request('GET', 'orders/'.$order->payment_id);

那时我遇到了一个我不明白的大问题。

对该API请求的响应对应于第二个应用程序的数据库的命令顺序。


"id":15,
"client_name":"Mr Doe",
"created_at":"2018-02-08 15:02:16",
"take_at":null,
"finish_at":null,
"state_id":1,
"delivery_type_id":1,
"user_id":null,
"payment_id":30

我使用类似 Laragon 的开发网络服务器

对不起,如果我不够清楚:/ 感谢您的帮助

【问题讨论】:

【参考方案1】:

很明显,您将路由定义为 POST,但您使用 Guzzle 客户端请求使用 GET 调用它。

解决方案:无论是在客户端调用中将方法更改为POST,还是在第一个项目路由文件中将Route设置为GET路由。

【讨论】:

以上是关于API Laravel 回复而不是另一个 API Laravel的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Laravel 中将我的 API 端点路由为 api.domain.com 而不是 domain.com/api

Laravel API resourceCollection 使用数组而不是模型

Laravel 5.4 POST 到 API 重定向 302 而不是返回验证错误

phpunit 测试资源 laravel 5.5 返回集合而不是 json

如何使用另一个 API 的用户群在 laravel 中设置身份验证?

如何调试来自 ReactJs(另一个项目)客户端的 Laravel API 请求?