热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

jeecms单个栏目调用_如何在没有GraphQL的情况下通过单个API调用获取多个资源

jeecms单个栏目调用毫无疑问,GraphQL是一个了不起的规范。我从一开始就喜欢它,但是当我开始学习它时,我开始讨厌它,

jeecms单个栏目调用

毫无疑问,GraphQL是一个了不起的规范。 我从一开始就喜欢它,但是当我开始学习它时,我开始讨厌它,并且在某种程度上我仍然很讨厌,因为我仍在学习它。 太多的样板代码甚至无法启动graphQL服务器。

最近,在进行一个项目时,我需要实现大量的API路由,并且没有使用任何规范,Rest和GraphQL都没有。 但是工作几天后,我遇到了通常的问题,太多的路线定义。

我当时正在考虑解决问题的方法,并且知道GraphQL在那里,但我现在不觉得自己需要那种复杂的API语言。 无论如何,我仍然尝试在我的项目中实现GraphQL,但这花费的时间太长了,也许是因为我是新来的。

我没有花更多的时间在GraphQL上,而是做了一个简单的函数来复制GraphQL引擎的基本功能。 现在,我可以像GraphQL一样在同一个API调用中调用多个操作,但只需几行代码。 当然,我的小代码无法与GraphQL竞争,因为它是为大型应用程序和企业开发的。 更具体地说,是公开其API的服务。

我现在正在使用Laravel,但是可以将其转换为任何Framework或仅转换为Basic PHP,

1.为API定义一个入口点

Route::post(&#39;/run&#39; , function (Request $request) {$response &#61; [];$operations &#61; $request->operations;if (count($operations) <&#61; 0 ) {return response()->json([ "data" &#61;> $response]);}foreach ($operations as $operation) {$className &#61; $operation[ &#39;name&#39; ];$classPath &#61; "App\\Operations\\$className" . "Operation" ;$variables &#61; $operation[ &#39;variables&#39; ] ?? [];if (class_exists($classPath)) {$response[$className] &#61; ( new $classPath())->run($variables); /* run() method will always return an array which is then saved into the $response variable with the OperationName as its key */} else {$response[$className] &#61; [];}}return response()->json([ "data" &#61;> $response]);
});

2.创建操作

上面的代码简单地一个接一个地调用从API调用的操作&#xff0c;并运行为每个操作分别定义的操作文件。

为此&#xff0c;您需要首先创建一个目录来存储所有操作&#xff0c;我的目录位于App \ Operations&#xff0c;并且此目录内的所有文件名都以Operation关键字作为后缀。

操作界面

interface Operation
{public function run ($variables &#61; []) ;
}

一个操作类的例子

class ExampleOperation
{public function run ($variables &#61; []) {// do your stuff here// return the response}
}

3.从API调用操作

在这种情况下&#xff0c;VaultBalanceOperation不存在&#xff0c;因此它返回一个空数组。

我知道这不是一个完美的实现。 我不太喜欢设计模式和花哨的东西。 我只是有一个问题&#xff0c;我试图解决它。 如果要使用GraphQL&#xff0c;请不要将其与GraphQL进行比较。

这不支持请求特定字段之类的功能&#xff0c;但我正在考虑。 我有一些想法&#xff0c;看看是否可行。

对此有任何疑问或讨论&#xff0c;请在下面评论。

结论

现在&#xff0c;这个简单的实现在单个API调用中支持多个资源获取&#xff0c;这在性能方面非常好。 您还可以在每个操作中传递变量&#xff08;用于登录操作中的分页或用户名/密码&#xff09;。 上面的示例使用的是我在项目中所做的一些Laravel内容&#xff0c;但是可以轻松地在任何PHP应用程序或框架中使用&#xff08;注释&#xff0c;如果想学习如何使用的话&#xff09;。 将来&#xff0c;我想通过提及字段和关系来添加一个选项&#xff0c;仅请求我们需要的数据。

跟随我以了解有关我在日常生活中尝试和做的事情的更多信息。



翻译自: https://hackernoon.com/improve-app-performance-by-fetching-multiple-resources-in-a-single-api-call-z01b132ay

jeecms单个栏目调用



推荐阅读
  • 使用EF Core在.Net Core控制台应用中操作SQLite数据库
    本文介绍如何利用Visual Studio 2019和Windows 10环境,通过Entity Framework Core(EF Core)实现对SQLite数据库的读写操作。项目源代码可从百度网盘下载。 ... [详细]
  • 微信小程序支付官方参数小程序中代码后端发起支付代码支付回调官方参数文档地址:https:developers.weixin.qq.comminiprogramdeva ... [详细]
  • 本文详细介绍了PHP中的几种超全局变量,包括$GLOBAL、$_SERVER、$_POST、$_GET等,并探讨了AJAX的工作原理及其优缺点。通过具体示例,帮助读者更好地理解和应用这些技术。 ... [详细]
  • 这个报错出现在userDao里面,sessionfactory没有注入。解决办法:spring整合Hibernate使用test测试时要把spring.xml和spring-hib ... [详细]
  • C#爬虫Fiddler插件开发自动生成代码
    哈喽^_^一般我们在编写网页爬虫的时候经常会使用到Fiddler这个工具来分析http包,而且通常并不是分析一个包就够了的,所以为了把更多的时间放在分析http包上,自动化生成 ... [详细]
  • 在现代移动应用开发中,尤其是iOS应用,处理来自服务器的JSON数据是一项基本技能。无论是使用Swift还是PHP,有效地解析和利用JSON数据对于提升用户体验至关重要。本文将探讨如何在Swift中优雅地处理JSON,以及PHP中处理JSON的一些技巧。 ... [详细]
  • PHP网站部署指南:从零开始搭建PHP网站
    本文提供了详细的步骤指导,帮助开发者在不同环境下成功部署PHP网站,包括在IIS和Apache服务器上的具体操作。 ... [详细]
  • 点击上方“中兴开发者社区”,关注我们每天读一篇一线开发者原创好文DevOps微课系列旨在帮助用户学习DevOps实践。1概述    本文详细介绍一般开发人员使用Gerrit代码评审 ... [详细]
  • MVC框架下使用DataGrid实现时间筛选与枚举填充
    本文介绍如何在ASP.NET MVC项目中利用DataGrid组件增强搜索功能,具体包括使用jQuery UI的DatePicker插件添加时间筛选条件,并通过枚举数据填充下拉列表。 ... [详细]
  • Flask中路由的基础定义与应用
    本文介绍了如何在Flask框架中通过装饰器为视图函数指定访问路径,并详细讲解了带参数路由及指定请求方法的实现方式。 ... [详细]
  • 帝国cms各数据表有什么用
    CMS教程|帝国CMS帝国cmsCMS教程-帝国CMS精易编程助手源码,ubuntu桥接设置,500错误是tomcat吗,爬虫c原理,php会话包括什么,营销seo关键词优化一般多 ... [详细]
  • 本文详细介绍了在PHP中如何获取和处理HTTP头部信息,包括通过cURL获取请求头信息、使用header函数发送响应头以及获取客户端HTTP头部的方法。同时,还探讨了PHP中$_SERVER变量的使用,以获取客户端和服务器的相关信息。 ... [详细]
  • 使用jQuery与百度地图API实现地址转经纬度功能
    本文详细介绍了如何利用jQuery和百度地图API将地址转换为经纬度,包括申请API密钥、页面构建及核心代码实现。 ... [详细]
  • REST API 时代落幕,GraphQL 持续引领未来
    尽管REST API已广泛使用多年,但在深入了解GraphQL及其解决的核心问题后,我深感其将引领未来的API设计趋势。GraphQL不仅提高了数据查询的效率,还增强了灵活性和性能,有望成为API开发的新标准。 ... [详细]
  • 本文基于《Core Java Volume 2》的内容,深入探讨了网络编程中通过POST方法提交表单数据的技术细节,包括GET与POST方法的区别、POST提交的具体步骤及常见问题处理。 ... [详细]
author-avatar
吃货程序猿
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有