做头像的网站自己的名字,湖南seo优化公司,网页转app制作工具 安卓,成都旅游景点大全排名GraphQL 既是一种用于 API 的查询语言也是一个满足你数据查询的运行时。GraphQL 对你的 API 中的数据提供了一套易于理解的完整描述#xff0c;使得客户端能够准确地获得它需要的数据#xff0c;而且没有任何冗余#xff0c;也让 API 更容易地随着时间推移而演进#xff0c… GraphQL 既是一种用于 API 的查询语言也是一个满足你数据查询的运行时。GraphQL 对你的 API 中的数据提供了一套易于理解的完整描述使得客户端能够准确地获得它需要的数据而且没有任何冗余也让 API 更容易地随着时间推移而演进还能用于构建强大的开发者工具。 ——出自 https://graphql.cn如果换个简单粗暴的说法就是减少API中查询的代码。这对写api的程序员是个福音那这时你肯定想减少后那功能会减少吗其实正好相反会增加查询场景。关于GraphQL的基础知识可以通过https://grapql.cn来学习这里不再赘述当了解GraphQL基础知识后这里要说明的是由Michael Staib主导的asp.net core上的GraphQL的实现。首先安装两个Nuget包HotChocolate.AspNetCoreHotChocolate.Data在startup中注入graphql相关的实体类型 using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;namespace GraphQLDemo00
{public class Startup{public void ConfigureServices(IServiceCollection services){services.AddGraphQLServer()//引入GraphQL .AddQueryTypeQuery()//注入查询类型 .AddProjections()//映射字段.AddFiltering()//注入查询过滤器.AddSorting();//注入排序} public void Configure(IApplicationBuilder app, IWebHostEnvironment env){if (env.IsDevelopment()){app.UseDeveloperExceptionPage();}app.UseRouting();app.UseEndpoints(endpoints {endpoints.MapGraphQL();});}}
}
定义查询using HotChocolate.Data;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;namespace GraphQLDemo00
{/// summary/// 查询类/// /summarypublic class Query{/// summary/// 查询学生/// /summary/// returns/returns[UseFiltering][UseSorting][UseProjection]public ListStudent GetStudents(){return new ListStudent{new Student { StuNoN0001, Name张三, Age21, Sextrue },new Student { StuNoN0002, Name李四, Age22, Sexfalse },new Student { StuNoN0003, Name王五, Age23, Sextrue }};}}/// summary/// 学生实体/// /summarypublic class Student{/// summary/// 学号/// /summarypublic string StuNo { get; set; }/// summary/// 姓名/// /summarypublic string Name { get; set; }/// summary/// 年龄/// /summarypublic int Age { get; set; }/// summary/// 性别/// /summarypublic bool Sex { get; set; }}
}
然后用http://localhost:5000/graphqlHotChocolate实现了一套UI也可以用Postman来访问(可见GraphQL正在流行起来){students(where:{ and:[{sex:{eq:true}}{age:{gt:21 }}]}){stuNonamesexage}
}
GraphQL正是通过上面的语法来实现自定义查询条件可以自由组合返回的结果当然也是根据条件而来的就像我们写SQL语句select什么字段where条件是什么提升了灵活性而不用每种查询我们都在后台代码中实现一下这也正是它的重点。