当前位置: 首页 > news >正文

上海做个网站多少钱wordpress 搜索记录

上海做个网站多少钱,wordpress 搜索记录,网站情况建设说明,友情链接qq群1. 简介 GraphQL是Facebook的一个相对较新的概念#xff0c;被称为Web API的REST的替代品。 在本文中#xff0c;我们将学习如何使用 Spring Boot 设置 GraphQL 服务器#xff0c;以便我们可以将其添加到现有应用程序中或在新应用程序中使用它。 2. 什么是GraphQL#x…1. 简介 GraphQL是Facebook的一个相对较新的概念被称为Web API的REST的替代品。 在本文中我们将学习如何使用 Spring Boot 设置 GraphQL 服务器以便我们可以将其添加到现有应用程序中或在新应用程序中使用它。 2. 什么是GraphQL 传统的 REST API 使用服务器管理资源的概念。我们可以使用各种HTTP请求以一些标准方式操作这些资源。只要我们的 API 符合资源概念这就可以很好地工作但当我们需要偏离它时很快就会分崩离析。 当客户端需要同时来自多个资源的数据时例如请求博客文章和评论时也会受到影响。通常这是通过让客户端发出多个请求或让服务器提供可能并不总是需要的额外数据来解决的从而导致更大的响应大小。 GraphQL 为这两个问题提供了解决方案。它允许客户端准确指定所需的数据包括在单个请求中导航子资源并允许在单个请求中进行多个查询。 它还以更多的 RPC 方式工作使用命名查询和突变而不是标准的强制操作集。这适用于将控件放在它所属的位置API 开发人员指定可用的内容API 使用者指定所需的内容。 例如博客可能允许以下查询 query {recentPosts(count: 10, offset: 0) {idtitlecategoryauthor {idnamethumbnail}} } 此查询将 索取十个最新帖子对于每个帖子请求 ID、标题和类别对于每个帖子请求作者返回 ID、姓名和缩略图 在传统的 REST API 中这需要 11 个请求一个用于帖子10 个用于作者或者需要在帖子详细信息中包含作者详细信息。 2.1. GraphQL 模式 GraphQL 服务器公开了一个描述 API 的模式。此架构由类型定义组成。每种类型都有一个或多个字段每个字段接受零个或多个参数并返回特定类型。 graph派生自这些字段相互嵌套的方式。请注意graph不需要是非循环的循环是完全可以接受的但它是定向的。客户端可以从一个字段获取到其子字段但除非架构显式定义此字段否则它无法自动返回到父字段。 博客的示例 GraphQL 架构可能包含以下定义描述帖子、文章作者和根查询以获取博客上的最新文章 type Post {id: ID!title: String!text: String!category: Stringauthor: Author! }type Author {id: ID!name: String!thumbnail: Stringposts: [Post]! }# The Root Query for the application type Query {recentPosts(count: Int, offset: Int): [Post]! }# The Root Mutation for the application type Mutation {createPost(title: String!, text: String!, category: String, authorId: String!) : Post! } 某些名称末尾的“!”表示它是不可为空的类型。任何没有此值的类型都可以在服务器的响应中为 null。GraphQL 服务可以正确处理这些字段使我们能够安全地请求可为空类型的子字段。 GraphQL 服务还使用一组标准字段公开架构允许任何客户端提前查询架构定义。 这允许客户端自动检测架构何时更改并允许客户端动态适应架构的工作方式。一个非常有用的例子是 GraphiQL 工具它允许我们与任何 GraphQL API 进行交互。 3. 介绍 GraphQL Spring Boot Starter Spring Boot GraphQL Starter 提供了一种在很短的时间内让 GraphQL 服务器运行的绝佳方法。使用自动配置和基于注释的编程方法我们只需要编写服务所需的代码。 3.1. 设置服务 需要的依赖项 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-graphql/artifactId /dependency dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId /dependency 因为 GraphQL 与传输无关所以我们在配置中包含 Web 启动器。这会在默认的 /graphql 端点上使用 Spring MVC 通过 HTTP 公开 GraphQL API。其他启动器可用于其他底层实现例如Spring Webflux。如有必要我们还可以在 application.properties 文件中自定义此端点。 3.2. 编写模式 GraphQL Boot 启动器的工作原理是处理 GraphQL 模式文件来构建正确的结构然后将特殊的 bean 连接到此结构。Spring Boot GraphQL 启动器会自动查找这些模式文件。 我们需要将这些“.graphqls”或“.gqls”模式文件保存在src/main/resources/graphql/**位置下Spring Boot会自动拾取它们。像往常一样我们可以使用 spring.graphql.schema.locations 自定义位置并使用spring.graphql.schema.file-extensions 配置属性自定义文件扩展名。 一个要求是必须只有一个根查询和最多一个根突变。与架构的其余部分不同我们不能将其拆分到文件之间。这是 GraphQL 模式定义的限制而不是 Java 实现的限制。 3.3. Root Query Resolver 根查询需要具有特殊批注的方法来处理此根查询中的各种字段。与模式定义不同根查询字段只有一个 Spring Bean 没有限制。 我们需要用QueryMapping注释来注释处理程序方法并将它们放在应用程序中的标准Controller组件中。这会将带注释的类注册为 GraphQL 应用程序中的数据获取组件 Controller public class PostController {private PostDao postDao;QueryMappingpublic ListPost recentPosts(Argument int count, Argument int offset) {return postDao.getRecentPosts(count, offset);} } 上面定义了方法 recentPosts我们将使用它来处理之前定义的模式中 recentPosts 字段的任何 GraphQL 查询。此外该方法必须具有使用与架构中的相应参数对应的Argument批注的参数。 它还可以选择采用其他与 GraphQL 相关的参数例如 GraphQLContext、DataFetchingEnvironment 等以访问底层上下文和环境。 该方法还必须为 GraphQL 模式中的类型返回正确的返回类型正如我们将要看到的。我们可以使用任何简单的类型StringIntList等以及等效的Java类型系统只是自动映射它们。 3.4. 使用 bean 来表示Types GraphQL 服务器中的每个复杂类型都由 Java Bean 表示无论是从根查询还是从结构中的其他任何位置加载。同一个 Java 类必须始终表示相同的 GraphQL 类型但类的名称不是必需的。 Java Bean 中的字段将根据字段名称直接映射到 GraphQL 响应中的字段 public class Post {private String id;private String title;private String category;private String authorId; } Java Bean 上任何未映射到 GraphQL 模式的字段或方法都将被忽略但不会导致问题。 3.5. Complex Values的字段解析器 有时字段的值对于加载来说并不重要。这可能涉及数据库查找、复杂计算或其他任何内容。SchemaMapping注释将处理程序方法映射到架构中具有相同名称的字段并将其用作该字段的 DataFetcher。 SchemaMapping public Author author(Post post) {return authorDao.getAuthor(post.getAuthorId()); } 重要的是如果客户端不请求字段那么 GraphQL 服务器将不会执行检索它的工作。这意味着如果客户端检索帖子并且不要求作者字段则不会执行上面的author() 方法也不会进行 DAO 调用。或者我们也可以在注释中指定父类型名称和字段名称 SchemaMapping(typeNamePost, fieldauthor) public Author getAuthor(Post post) {return authorDao.getAuthor(post.getAuthorId()); } 在这里注释属性用于将其声明为架构中author字段的处理程序。 3.6. 可为空值 GraphQL 模式的概念是某些类型可为空而其他类型则不可为空。我们在 Java 代码中直接使用 null 值来处理这个问题。相反我们可以将 Java 8 中的新 Optional 类型直接用于可为空的类型系统将对这些值执行正确的操作。 这非常有用因为这意味着我们的 Java 代码与方法定义中的 GraphQL 模式更明显地相同。 3.7. 突变 到目前为止我们所做的一切都是为了从服务器检索数据。GraphQL 还能够通过突变更新存储在服务器上的数据。 从代码的角度来看查询没有理由不能更改服务器上的数据。我们可以轻松编写接受参数、保存新数据并返回这些更改的查询解析器。这样做会给 API 客户端带来令人惊讶的副作用并被视为不良做法。 相反应使用突变来通知客户端这将导致正在存储的数据发生更改。 与 Query 类似通过在控制器中用 MutationMapping 注释处理程序方法来定义突变。然后来自突变字段的返回值与来自查询字段的返回值完全相同从而允许检索嵌套值 MutationMapping public Post createPost(Argument String title, Argument String text,Argument String category, Argument String authorId) {Post post new Post();post.setId(UUID.randomUUID().toString());post.setTitle(title);post.setText(text);post.setCategory(category);post.setAuthorId(authorId);postDao.savePost(post);return post; } 4. GraphiQL GraphQL 还有一个名为 GraphiQL 的配套工具。这个 UI 工具可以与任何 GraphQL 服务器通信并有助于针对 GraphQL API 使用和开发。 Spring GraphQL 附带了一个默认的 GraphQL 页面该页面在 /graphiql 端点处公开。默认情况下终结点处于禁用状态但可以通过启用spring.graphql.graphiql.enabled 属性来打开它。这提供了一个非常有用的浏览器内工具来编写和测试查询尤其是在开发和测试期间。
http://www.yutouwan.com/news/121498/

相关文章:

  • 国外html响应式网站模板合肥网站建设怎么做
  • 做证书的网站做图片赚钱的网站
  • 网站开发的付款方式烟台网站seo
  • 做果盘网站微营销是什么合法吗
  • 如何推广公司网站上海网站设计公司
  • 免费建站的平台服装线上结合线下的推广方案
  • 罗定微网站建设做小程序的流程
  • 南京网站建设服务西安seo网站排名优化公司
  • 专业建站公司电话咨询常州做网站的公司
  • 网站建设开什么名目免费诶网站建设
  • 聊天室网站模板辽源做网站的公司
  • 网站营销 优势图跃网站建设
  • 网站如何做背景音乐门户网站内容建设
  • 招聘网站的建设南宁logo设计公司
  • 2个域名指向同一个网站什么是网络营销公司
  • 创造你魔法官方网站起做欢的事在网站做博客
  • 做网站有名的公司明星个人flash网站源码
  • 泉州app网站开发价格wordpress添加会员标识
  • 网络建站免费网址建筑工程有限公司电话
  • 自己主机做标签电影网站银川网站建设公司
  • 东营住房与城乡建设部网站类似凡科建站的平台
  • 丹阳高铁站对面的规划网站备案后要做什么
  • 微商城系统网站模板请求php网站数据库
  • 上海建筑建材业网站迁移网站制作优质公司
  • 电脑可以做网站主机么学生怎样建设网站
  • 有没有一些帮做名片的网站六枝网站建设
  • 福永专业外贸网站建设公司做网站的优势有哪些
  • 适合学生做的网站类型企业服务有哪些内容
  • 营销网络的建设是什么意思兰州快速seo整站优化招商
  • 生态建筑建设公司网站全网营销型网站新闻