非标准化 api 接口的问题

1. 运行环境

laravel sail

1). 当前使用的 Laravel 版本?

laravel9

2). 当前使用的 php/php-fpm 版本?

PHP 版本:8.0

php-fpm 版本:8.0

2. 问题描述?

给一个前端小程序写后端 api 服务,小程序那边的接口规范是通过公共请求参数中的 service 参数来确定接口的,如下:

公共请求参数:

{ "biz_content": { "licensePlate": "京W11111", "feeStatus": "FINISH", "pageNum": 1, "pageSize": 10, "userId": "208842226xxxxxxx", "token": "12345xxxxx" }, "service": "api.parking.queryPayListByLicensePlate" }

我想问一下,在 laravel 中能处理这种 api 请求吗?能在中间件中通过识别 service 参数转发到不同路由去吗?还是有其他比较稳妥的做法呢?

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 9

可以~预反射好像时

2年前 评论

统一路由到一个Controller中,按照标准化的数据解析出应该调用的Service,完成调用

2年前 评论
际遇 (楼主) 2年前
deatil 2年前
际遇 (楼主) 2年前
deatil 2年前

Source code

我本来想找找关于动态调用控制器、方法的源码,但后来发现直接调用 route 似乎更合适。

自己也没实际用过,不知道能不能满足你的需求。

respondWithRoute 源码

Demo

Route::get('temp', function (\Illuminate\Routing\Router $router) {
    return $router->respondWithRoute('test');
});
Route::get('test', function (\Illuminate\Routing\Router $router) {
    dd($router);
//    return 'Test page';
})->name('test');
2年前 评论
际遇 (楼主) 2年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!