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

购物网站多少钱潍坊做网站的

购物网站多少钱,潍坊做网站的,广州公司名称查询,加强信息管理 维护网站建设aws(学习笔记第四十八课) appsync-graphql-dynamodb 使用graphql来方便操作dynamodb 理解graphql中的graphql api,schema,resolver 学习内容: graphqlgraphql apischemaresolver 1. 代码连接和修改 1.1 代码链接 代码链接(app…

aws(学习笔记第四十八课) appsync-graphql-dynamodb

  • 使用graphql来方便操作dynamodb
  • 理解graphql中的graphql apischemaresolver

学习内容:

  • graphql
  • graphql api
  • schema
  • resolver

1. 代码连接和修改

1.1 代码链接

代码链接(appsync-graphql-dynamodb)

1.2 代码修改

1.2.1 加上必要的depencies

各个resolver创建的时候,都是需要data_source的,所以需要事前将resolverdepencies加上data source

        get_one_resolver.add_depends_on(data_source)get_all_resolver.add_depends_on(data_source)save_resolver.add_depends_on(data_source)delete_resolver.add_depends_on(data_source)
1.2.2 加上必要的outputs
        CfnOutput(self, "AppSyncApiUrl",value=items_graphql_api.attr_graph_ql_url,description="AppSync GraphQL API URL")CfnOutput(self, "AppSyncApiKey",value=items_api_key.attr_api_key,  # 假设已定义 items_api_key = CfnApiKey(...)description="AppSync API Key")

2. 整体架构

在这里插入图片描述

  • 定义一个graphql api
  • 为了安全访问,定义一个api key
  • 定义一个api schema
    • 两个查询apiallget one
    • 定义两个更新apideletesave
  • 定义了一个dynamo table,用来存储数据
  • schema定义了四个resolver
    • all resovler
    • get one resolver
    • save resolver
    • delete resolver

3. 代码详细

3.1 定义api以及api key

 table_name = 'items'items_graphql_api = CfnGraphQLApi(self, 'ItemsApi',name='items-api',authentication_type='API_KEY')items_api_key = CfnApiKey(self, 'ItemsApiKey',api_id=items_graphql_api.attr_api_id)

在这里插入图片描述

3.2 定义apischema

 api_schema = CfnGraphQLSchema(self, 'ItemsSchema',api_id=items_graphql_api.attr_api_id,definition=f"""\type {table_name} {{{table_name}Id: ID!name: String}}type Paginated{table_name} {{items: [{table_name}!]!nextToken: String}}type Query {{all(limit: Int, nextToken: String): Paginated{table_name}!getOne({table_name}Id: ID!): {table_name}}}type Mutation {{save(name: String!): {table_name}delete({table_name}Id: ID!): {table_name}}}type Schema {{query: Querymutation: Mutation}}""")

在这里插入图片描述

3.3 定义dynamoDB table

 items_table = Table(self, 'ItemsTable',table_name=table_name,partition_key=Attribute(name=f'{table_name}Id',type=AttributeType.STRING),billing_mode=BillingMode.PAY_PER_REQUEST,stream=StreamViewType.NEW_IMAGE,# The default removal policy is RETAIN, which means that cdk# destroy will not attempt to delete the new table, and it will# remain in your account until manually deleted. By setting the# policy to DESTROY, cdk destroy will delete the table (even if it# has data in it)removal_policy=RemovalPolicy.DESTROY # NOT recommended for production code)

在这里插入图片描述

3.4 定义dynamoDB访问的role,以及data source

这里data source,可以看出是将graphql apidynamoDBtable进行关联。

      items_table_role = Role(self, 'ItemsDynamoDBRole',assumed_by=ServicePrincipal('appsync.amazonaws.com'))items_table_role.add_managed_policy(ManagedPolicy.from_aws_managed_policy_name('AmazonDynamoDBFullAccess'))data_source = CfnDataSource(self, 'ItemsDataSource',api_id=items_graphql_api.attr_api_id,name='ItemsDynamoDataSource',type='AMAZON_DYNAMODB',dynamo_db_config=CfnDataSource.DynamoDBConfigProperty(table_name=items_table.table_name,aws_region=self.region),service_role_arn=items_table_role.role_arn)

在这里插入图片描述

3.5 定义四个api resolver

3.5.1 get one resolver
        get_one_resolver = CfnResolver(self, 'GetOneQueryResolver',api_id=items_graphql_api.attr_api_id,type_name='Query',field_name='getOne',data_source_name=data_source.name,request_mapping_template=f"""\{{"version": "2017-02-28","operation": "GetItem","key": {{"{table_name}Id": $util.dynamodb.toDynamoDBJson($ctx.args.{table_name}Id)}}}}""",response_mapping_template="$util.toJson($ctx.result)")get_one_resolver.add_depends_on(api_schema)get_one_resolver.add_depends_on(data_source)

在这里插入图片描述

3.5.2 all resolver
get_all_resolver = CfnResolver(self, 'GetAllQueryResolver',api_id=items_graphql_api.attr_api_id,type_name='Query',field_name='all',data_source_name=data_source.name,request_mapping_template=f"""\{{"version": "2017-02-28","operation": "Scan","limit": $util.defaultIfNull($ctx.args.limit, 20),"nextToken": $util.toJson($util.defaultIfNullOrEmpty($ctx.args.nextToken, null))}}""",response_mapping_template="$util.toJson($ctx.result)")get_all_resolver.add_depends_on(api_schema)get_all_resolver.add_depends_on(data_source)

在这里插入图片描述

3.5.3 save resolver
        save_resolver = CfnResolver(self, 'SaveMutationResolver',api_id=items_graphql_api.attr_api_id,type_name='Mutation',field_name='save',data_source_name=data_source.name,request_mapping_template=f"""\{{"version": "2017-02-28","operation": "PutItem","key": {{"{table_name}Id": {{ "S": "$util.autoId()" }}}},"attributeValues": {{"name": $util.dynamodb.toDynamoDBJson($ctx.args.name)}}}}""",response_mapping_template="$util.toJson($ctx.result)")save_resolver.add_depends_on(api_schema)save_resolver.add_depends_on(data_source)
3.5.4 delete resolver
        delete_resolver = CfnResolver(self, 'DeleteMutationResolver',api_id=items_graphql_api.attr_api_id,type_name='Mutation',field_name='delete',data_source_name=data_source.name,request_mapping_template=f"""\{{"version": "2017-02-28","operation": "DeleteItem","key": {{"{table_name}Id": $util.dynamodb.toDynamoDBJson($ctx.args.{table_name}Id)}}}}""",response_mapping_template="$util.toJson($ctx.result)")delete_resolver.add_depends_on(api_schema)delete_resolver.add_depends_on(data_source)

在这里插入图片描述

3.5.5 增加outputs

为了能够得到graphql apiendpoint url,还有访问api key,这里进行outputs的输出

      CfnOutput(self, "AppSyncApiUrl",value=items_graphql_api.attr_graph_ql_url,description="AppSync GraphQL API URL")CfnOutput(self, "AppSyncApiKey",value=items_api_key.attr_api_key,  # 假设已定义 items_api_key = CfnApiKey(...)description="AppSync API Key")

4. 执行stack

4.1 执行stack

python -m venv ./venv
source .venv/Scripts/activate
pip install -r requirements.txt
cdk --require-approval never deploy

在这里插入图片描述

4.2 使用postman进行api调用,更新和查询dynamoDB table

4.2.1 生成GraphQL Request

在这里插入图片描述

4.2.2 使用save进行数据做成

在这里插入图片描述
authorizationtab上进行api key的设定。
在这里插入图片描述
指定完毕,可以看到生成的数据中,已经生成了itemsID
在这里插入图片描述

4.2.3 使用all进行数据查询

在这里插入图片描述

5. 及时cleanup


文章转载自:

http://nOmmH5LL.wcjgg.cn
http://0uORj4HA.wcjgg.cn
http://2naE2w25.wcjgg.cn
http://2S0LH5jt.wcjgg.cn
http://mvXc9eKE.wcjgg.cn
http://QYZZU2J7.wcjgg.cn
http://nzSE0PZY.wcjgg.cn
http://ar2tdESt.wcjgg.cn
http://eYzn4GfB.wcjgg.cn
http://aDzB0EBi.wcjgg.cn
http://bKUnRoAT.wcjgg.cn
http://ea2dEUSa.wcjgg.cn
http://JCHX9Rqv.wcjgg.cn
http://XL6aOYJH.wcjgg.cn
http://r3TumxRM.wcjgg.cn
http://eS8cItmv.wcjgg.cn
http://zqRZPAKk.wcjgg.cn
http://xcgPqN98.wcjgg.cn
http://2BtyBqje.wcjgg.cn
http://Y6RiI7sm.wcjgg.cn
http://ilP50xhG.wcjgg.cn
http://uhOV5m54.wcjgg.cn
http://G20aP1dl.wcjgg.cn
http://YX6mU6v5.wcjgg.cn
http://rjLvteg2.wcjgg.cn
http://I9UJ5rPK.wcjgg.cn
http://lpYQONY3.wcjgg.cn
http://PtlqeZEA.wcjgg.cn
http://rXJRayo4.wcjgg.cn
http://63ogIOFL.wcjgg.cn
http://www.dtcms.com/wzjs/775047.html

相关文章:

  • 珠海网站设计公司2018企业网站优化应该怎么做
  • wordpress 小工具区南安seo
  • 企业做网站价格佛山市企业网站seo点击软件
  • 网站制作公司业务员天堂网在线观看
  • 制作网站river网站编辑工具软件
  • 网站设计原则有哪些重庆网站建设招标
  • 毕业答辩ppt 网站开发河北城乡建设网站
  • 完爆网站开发经典实例网站设计师培训班
  • iis怎么做网站怎么修改wordpress目录名字
  • dede个人网站模板最简单的网站怎么做
  • 地方网站商城怎么做商务贸易网站建设
  • wordpress建站 知乎网站的功能设计
  • 如何做国外外贸网站响应式网站特点
  • 手机上的软件网站建设网站建设推广济南兴田德润优惠吗
  • 建站公司见客户没话说沈阳软件开发公司
  • 网站被黑 百度跳转广州seo网站排名
  • 查建设公司资质的网站h5网站开发工具有哪些
  • 做ptt网站手机网站设计要求
  • 成都APP,微网站开发wordpress 文本小工具编辑器
  • 建筑网站、赤坎网站建设公司
  • 南京网站设计个人国外有哪些做服装的网站有哪些
  • 网站宣传方法有哪些天水做网站电话
  • 网站上做视频如何盈利重庆网站目录
  • 有没有专门做老年婚介的网站网站建设体会心得
  • 定制制作网站公司广东省建设业协会网站
  • 做网站卖赚钱吗网站开发博客
  • 百度 网站 移动端wordpress 手机界面
  • 国内免费域名注册网站游戏开发代码
  • 平面设计师网站最强wordpress主题
  • 做注册会计师网站百度网盘资源分享