首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Laravel 应用构建 GraphQL API

代码示例:产品列表和用户列表的 API 例子 昨天我们学习了 Visual Code 搭建 Laravel 环境,现在我们来学习 Facebook 的 GraphQL 。...https://github.com/graphql/graphiql 以下图片可以看出,GraphQL 和 Rest 一样都是运行在业务逻辑层以外的: ? 开始 1....安装 Laravel 使用下面命令安装最新版本的 Laravel : # 命令行执行 composer global require "laravel/installer" laravel new...创建查询和定义 GraphQL 的类型 GraphQL 的查询与 Restful API 的末端路径查询是一样的,查询只是用于获取数据,以及创建、更新、删除操作。...GraphQL 的 类型 用于定义查询每个字段的类型定义,类型会帮助我们格式化查询结果的有格式的字段,例如布尔类型,字符串类型,浮点类型,整数类型等等,以及我们的自定义类型。

3.4K20

API迭代解放!GraphQL的优缺点与团队价值

facebook推出的GraphQL,是一个特点非常鲜明的API查询语言。与SQL类似,GraphQL是一套规范,具体实现有很多框架。...调用方的角度,可以非常方便且自由地增加查询字段。 图片 左边的调用图来看,请求了hero的friends成员,里面包含多个对象。如右图所示,可以很方便地聚合返回 1.2....』这类需求,传统做法是,用如下不同的URL来区分 - api/app - api/miniapp 图片 而使用GraphQL,后端不需要改变/新增接口,前端可以通过自定义请求参数来控制返回的数据。...GraphQL的开发形式,跟方便后端实现便捷的文档(Code As Doc),如图,只需要注释就可以描述此接口的功能: 图片 新业务快速开发时,文档总是落后版本。...2.3 业务价值 对于业务的价值如下: 两端接口定义更方便理解 前端扩张数据控制权 后端接口适配解放 图片 GraphQL的灵活性,决定了前端无需与后台对齐接口,就可以开发。

3.2K341
您找到你想要的搜索结果了吗?
是的
没有找到

React 16 setState 返回 null 的妙用

概述 React 16 为了防止不必要的 DOM 更新,允许你决定是否让 .setState 更来新状态。调用 .setState 时返回 null 将不再触发更新。...React 16 对状态性能进行了改进,如果新的状态值与其现有值相同的话,通过 setState 返回 null 来防止来触发更新。 ?...我在下面的两个 GIF 突出显示了 React DevTools 的更新: ? 没有 setState 返回 null ?... setState 返回 null 之后 注意:我在这里换了一个深色主题,以便更容易观察到 React DOM 的更新。...总结 本文介绍了 React 16 怎样 setState 返回 null。我在下面的 CodeSandbox 添加了 mocktail 选择程序的完整代码,供你使用和 fork。

14.5K20

激荡二十年:HTTP API 的变迁

PHP 开发者可以把处理用户的 HTTP 请求,连接 mysql,组装 SQL 进行查询,将查询结果转换成 HTML,一路到 HTML 响应返回给用户的整个业务逻辑放在一个(或者若干个)如意大利面条般的脚本...其中,Google 通过其旗下的 gmail / google maps 大大促进了人们对 Ajax 的认知,而 PHP5 和 rails 3 则将 JSON 广大开发者推广开来,使其逐渐取代笨拙低效的...早年间 DBA 还是个热门的职位,后来 rails 以及其一众小弟的推波助澜下,DBA 几乎中小型企业销声匿迹。...quenya 说实话,思路上并没有比 goldrin 进步多少,它的核心还是一个编译器, OpenAPI 挖掘各种有用的信息,生成相应的代码。...最终, x-fields / x-filter 解析出来的内容,连同 rang 头(用于分页)一起,就可以构建出一个完整的,合法的 SQL 查询,最终得到返回的结果。

1.7K30

Bash如何字符串删除固定的前缀后缀

更多好文请关注↑ 问: 我想从字符串删除前缀/后缀。例如,给定: string="hello-world" prefix="hell" suffix="ld" 如何获得以下结果?...如果模式与 parameter 扩展后的值的开始部分匹配,则扩展的结果是 parameter 扩展后的值删除最短匹配模式(一个 # 的情况)或最长匹配模式(## 的情况)的值 ${parameter...如果模式与 parameter 扩展后的值的末尾部分匹配,则扩展的结果是 parameter 扩展后的值删除最短匹配模式(一个 % 的情况)或最长匹配模式(%% 的情况)的值。.../bash/manual/bash.html#Shell-Parameter-Expansion 相关阅读: bash:-(冒号破折号)的用法 Bash如何将字符串转换为小写 shell编程...$(cmd) 和 `cmd` 之间有什么区别 如何Bash变量删除空白字符 更多好文请关注↓

31810

追洞计划 | Gitlab CI Lint API未授权 SSRF漏洞(CVE-2021-22214)

二、漏洞影响 app="GitLab" 影响版本: 10.5 开始的所有版本 安全版本:官方当前最新的 13.12.2, 13.11.5 和 13.10.5 三、POC: curl -s --...GitLab_Graphql邮箱信息泄露漏洞(CVE-2020-26413) 一、漏洞描述 GitLab是美国GitLab公司的一款使用Ruby on Rails开发的、自托管的、Git(版本控制系统...GitLab存在Graphql接口 输入构造的数据时会泄露用户邮箱和用户名 二、影响范围 GitLab 13.4 – 13.6.2 title="GitLab" 三、漏洞复现 访问 URL...Gitlab本身不允许获取账号邮箱信息,这里通过调用 Graphql 用户名查询造成了邮箱泄露漏洞查看完报告后发现漏洞利用需要有账号用户名,不知道的情况下无法获取邮箱,Graphql官网查看得知可以通过另一个构造的语句一次性返回所有的用户名和邮箱...发包调用了 /api/graphql 接口发送数据 完整数据包为: POST //api/graphql HTTP/1.1 Host: 10.1.2.33:8888 User-Agent: Mozilla

2.6K50

用Node.js创建安全的 GraphQL API

因为GraphQL团队提供了全面的文档,并在Introduction to GraphQL列出了几个最佳实践。 什么是GraphQL查询? 如上所述,查询是客户端API读取和操作数据的一种方式。...如果你一个大型团队工作,可以将其拆分为创建前端和后端团队,从而允许他们使用相同的技术,并使他们的工作更轻松。 本文中,我们将重点介绍怎样构建使用GraphQL API的框架。...今天的文章,我们将专注于怎样用Node.js创建GraphQL API。 为什么要使用Node.js? GraphQL有好几个不同的支持库可供使用。...终端控制台中,你应该能够看到输出的字符串“Hello Graphql Node API tutorial”。...在后台场景,我们的配置会将 TypeScript 代码编译为纯 JavaScript,然后build文件夹执行构建。 现在为GraphQL API配置一个基本框架。

1.6K30

Strikingly 团队2017技术展望

现在主流的 API 设计范式是 RESTful API,然而在实践,我们发现 RESTful 一些真实业务逻辑的需求下不是很适用。...服务端只需要定义好业务逻辑设计的数据类型系统,客户端工程师就可以使用 GraphQL 自定义查询的数据及其结构,大大地提升了 API 的灵活性。...鉴于 GraphQL 目前社区生态上已经比较完善了,2017年我们将开始使用 GraphQL 渐渐替换掉内部已有的 RESTful API。...要解决这问题,我们需要重新审视 Rails Web 应用开发的定位。Rails 只是一个 Web 框架,它不是一个应用开发框架,不能也不应该负责 Web 应用领域相关的部分。...总结 总结一下,我们希望2017年实现以下目标: 借助一致的技术栈极大提升多客户端团队的产品开发效率,做出更多更好的产品特性 引入 GraphQL 重构 API 层,提供更丰富灵活的 API 遵循

2K00

【译】如何在 Node.js 创建安全的 GraphQL API

原文地址:How to Create a Secure Node.js GraphQL API 作者:Marcos 本文的目的是提供一份快速指南 -- 《如何快速如何在 Node.js 创建安全的...如前面所讲述的那样,查询 (query) 是客户端 API 读取和操作数据的方式。你可以传递一个对象的类型,并且定义所希望返回的字段类型。...下面是一个简单的查询: query{ users{ firstName, lastName } } 在这个查询,我们想从用户集合获取所有的用户,但只需要返回 firstName...构建 API 时,选择更接近实际需求的解决方案非常重要。 本文中,我们将关注与怎么使用框架来构建 GraphQL APIGraphQL 比 REST 更好吗?...GraphQL 一些场景中非常适合。REST 是一种架构设计模式,很多场景也得到了验证。如今,有大量的文章试图证明为什么一个比另一个好,或者你应该使用 REST 而不是 GraphQL

2.5K20

为什么Java没有为空字符串设置访问API呢 | Java Debug 笔记

为什么Java没有为空字符串设置访问API呢?...=========================熟悉Java的朋友都知道,当我们通过双引号创建字符串的时候,Java 会将字符串存储常量池中以供我们下次使用但是为什么String类不为我们提供一个对空字符串的引用呢因为这样做至少可以节省了编译的时间...,因为我们引用API的话编译器就知道我们引用现有的常量而不会再去对他做检查是否已经存在常量池等操作。...我个人认为这某种意义上来说这有点“代码味道”所以说,关于String的空字符一说Java是否有更加复杂的涉及考虑还说设计者没有考虑到这个问题呢回答1===String.EMPTY是12个字符,而"...他并不是你想的哪样可以现获取到空字符串然后通过类似StringBuilder或者StringBuffer来操作他然后再获取到String补充说明一下,我觉得适当的类中提供常量以供使用是完全可取的。

13210

什么是REST API

REST API示例 在你的浏览器打开以下链接,Open Trivia Database[3]请求一个随机的计算机问题: https://opentdb.com/api.php?...数据通常在HTTP主体传输,该方式与HTML提交或者发送单独的JSON编码的数据字符串等方式相同。...在请求头中传递一个包含base64编码的username:password字符串的 HTTPAuthorization头。...第三方应用程序通过发布一个密钥来获得使用API的许可,这个密钥可能有特定的权限或被限制一个特定的域。密钥每个请求的HTTP头或查询字符串中被传递。 OAuth[18]。...避免客户端JavaScript暴露API令牌。 阻止来自未知域名或IP地址的访问。 阻止意外的大型有效负载。 考虑速率限制,也就是使用同一API令牌或IP地址的请求被限制每分钟N个以内。

4.2K20

「首席架构师推荐」React生态系统大集合

- React的表单,没有眼泪 NeoForm - 用于表单状态管理和验证的模块化HOC react-jsonschema-form - 用于JSON Schema构建Web表单的React组件...React + Flux由Rails API支持:第1部分 Reails + Flux由Rails API支持:第2部分 Reails + Flux由Rails API支持:第3部分 Flux解决方案通过实例比较...将您的应用程序Redux重构为MobX Redux或MobX:尝试解散混乱 GraphQL 查询语言 GraphQL规范 GraphQL官方网站 GraphQL规范 GraphQL规范库 GraphQL...IDE,用于更好的开发工作流程 GraphQL教程 GraphQL简介 关于GraphQL的第一个想法 以类似的方式GraphQL建模查询 Thin and Graphy GraphQL概述 -...层,可以GraphQL服务器完成繁重的任务。

12.3K30

GraphQL API渗透测试指南

常见的GraphQL路径判定GraphQL API与Restful API不同,一般来说它的URL比较固定,这也是它的特性之一,单个请求获取应用程序所需的所有数据。...graphql......通用查询探测由于GraphQL API存在一个__typename 的保留字段,该字段会以字符串形式返回查询对象的类型,所以我们可以向未知API发送query{__typename...},如果响应返回{"data": {"__typename": "query"}},那么就可以确定该APIGraphQL API。...SQL注入GraphQL API同样会可能存在SQL注入漏洞,可以对查询结构体的一些参数进行SQL注入尝试。这里对“test”参数进行SQL注入尝试。加上单引号后返回报错信息。...graphql注入类似于SQL注入拼接字符串GraphQL API进行相关查询时,可以通过拼接的方式进行注入来获取数据或者改变查询逻辑。

97030

GraphQL 微服务架构的实践

id 都是不同的,但是很多时候我们都会将类型和 id 绑定到一起,组合后才能一个类型特定的 ID;为了保证 id 的不透明性,返回的 id 往往都是 Base64 编码的字符串GraphQL 服务器接收到对应...PostConnection 中会存在多个 PostEdge 对象,其中的 cursor 就是我们用来做分页的字段,所有的 cursor 其实都是 Base64 编码的字符串,这能够提醒调用方 cursor...总结 刚开始使用 GraphQL 到现在已经过去了将近半年的时间,微服务实践 GraphQL 的过程,我们发现了微服务与 GraphQL 之间设计思路冲突的地方,也就是去中心化与中心化。...id 都是不同的,但是很多时候我们都会将类型和 id 绑定到一起,组合后才能一个类型特定的 ID;为了保证 id 的不透明性,返回的 id 往往都是 Base64 编码的字符串GraphQL 服务器接收到对应...PostConnection 中会存在多个 PostEdge 对象,其中的 cursor 就是我们用来做分页的字段,所有的 cursor 其实都是 Base64 编码的字符串,这能够提醒调用方 cursor

2.6K20

新一代数据查询语言GraphQL来啦!

GraphQL就是为了满足这一个需求而产生的,Facebook2012年开始完善,与2015年展开GraphQL的开源的进程,并形成一个围绕GraphQL的社区。...所以最终GraphQL给了产品设计人员和开发人员重新思考移动应用数据获取的机会,它将开发的重点转移到了客户端应用,这里是设计师和开发人员最关注的地方。 3. 什么是GraphQL?...GraphQL是一种API查询语言,是一个对自定义类型系统执行查询的服务端运行环境 一个GraphQL查询是一个被发往服务端的字符串,该查询服务端被解释和执行后返回JSON数据给客户端。...Fackbook中使用相同版本的GraphQL API 支持了跨域三年的Fackbook应用。 4....一个刚开始简单的用户接口可能只返回少部分信息,例如用户名、头像等。随着API的不断发展,可能需要返回更多的信息,例如年龄、昵称、签名等。

2.9K70

新一代数据查询语言GraphQL来啦!

GraphQL就是为了满足这一个需求而产生的,Facebook2012年开始完善,与2015年展开GraphQL的开源的进程,并形成一个围绕GraphQL的社区。...所以最终GraphQL给了产品设计人员和开发人员重新思考移动应用数据获取的机会,它将开发的重点转移到了客户端应用,这里是设计师和开发人员最关注的地方。 3. 什么是GraphQL?...GraphQL是一种API查询语言,是一个对自定义类型系统执行查询的服务端运行环境 一个GraphQL查询是一个被发往服务端的字符串,该查询服务端被解释和执行后返回JSON数据给客户端。...Fackbook中使用相同版本的GraphQL API 支持了跨域三年的Fackbook应用。 4....一个刚开始简单的用户接口可能只返回少部分信息,例如用户名、头像等。随着API的不断发展,可能需要返回更多的信息,例如年龄、昵称、签名等。

88630
领券