Salesforce 构建可扩展 API 的旅程( 二 )
GraphQL使用强类型系统 , 所有的类型都是使用GraphSDL以模式(schema)的方式进行定义的 。 它可以作为客户端和服务器的契约 , 避免请求/响应结构的混淆 。
GraphLQ支持内省(introspection) , 所以模式定义可以通过各种工具进行共享和下载 , 如GraphiQL、GraphQL-playground或cli工具 。
GraphQL实战
我们在ClassificationInsightAPI中使用了GraphQL 。 ClassificationInsight提供了用户的信息 , 并且能够帮助会议的参加者了解其他参会人员的头衔和角色 。 我们使用Kotlin和graphql-java(GraphQL的一个Java实现)实现该API 。
第一步:定义模式(如schema.graphqls) 。 每个GraphQL服务会定义一组类型 。 GraphQL模式中最基本的组件是对象类型 , 它代表了一种我们可以从服务中获取的对象 。
schema.graphqls
第二步:实现Datafetcher(也被称为解析器)来解析getClassificationInsightsByUser字段 。 简单来讲 , 解析器就是由开发人员提供的一个函数 , 用来解析模式中定义的每个字段并从配置的资源(如数据库、其他API或缓存等)中返回值 。
在本例中 , 我们的Query类型提供了一个名为getClassificationInsightsByUser的字段 , 它接受emailAddresses参数 。 该字段的解析器函数很可能会访问一个数据库 , 并构造和返回ClassificationInsightByUser对象的一个列表 。
第三步:初始化GraphQLSchema和GraphQLObject(借助graphql-java)来辅助执行查询 。
第四步:编写servlet(MyAppServlet) , 处理传入的请求
第五步:在应用中 , 嵌入Web服务器(本例中使用的是Jetty) 。
第六步:构建并启动应用 , 请使用CI/CD工具来创建、发布和部署Docker镜像到集群中 。
确保API的安全性
在Salesforce , 安全性是首要任务 。 我们的API仅供注册用户访问 , 而且他们只能访问有权限的数据 。 在这方面 , 你可以探索OAuth2.0(JWT授予类型和基于角色的访问控制)和开放策略代理(OpenPolicyAgent , OPA)来满足访问控制的需求 。
作为最佳实践 , 认证中间件应该放在GraphQL之前 , 并且要在业务逻辑层有唯一一个地方负责授权 , 避免在多个地方都要进行检查 。 除了认证和授权 , 在设计API时还应考虑速率限制、数据脱敏(datamasking)和载荷扫描 。
总结
【Salesforce 构建可扩展 API 的旅程】我们已经展示了如何构建一个可扩展、高效、安全的API 。 在这个过程中 , 我们使用应用容器进行扩展 , 使用GraphQL和嵌入式Jetty确保高效和轻量级 , 并优先考虑了API的安全性 。
- 英特尔|没有任何开发者开发鸿蒙APP,华为怎么构建生态?永远用安卓APP?
- 借助互联网和大数据技术,构建专业化健康管理服务体系
- |迄今最详细合成肠道微生物群构建
- 本文转自:中国发展网使用建立模型的方式对事物进行描述|数据治理:数据模型体系构建要点及实践
- 十余项重大科研成果发布 之江实验室构建创新“朋友圈”
- 开源是全球科技发展的关键源动力之一|拥抱开源,飞腾加速构建繁荣生态!
- 本文转自:中国日报网丽合品牌构建「多维审美」「专精自然」「深研创新」于一体的自然美学医疗...|自然美学高峰,丽合品牌正式入驻中国
- 本文转自:新民网安全、高速、稳定的移动通信服务是加快构建“15分钟核酸采样服务圈”的重要...|信号“满格”全覆盖!普陀助力核酸采样点“一扫就有
- 同盾|构建可信AI体系,同盾智邦平台荣获“2022可信人工智能实践优秀案例奖”
- 更强的开放性,潘塔纳尔系统愿与开发者一同构建美好智慧生活