创建使用微服务的应用
概述
DNN提供api,您可以使用它从应用程序访问微服务。基本上,您的应用程序只需要生成HTTPS请求https://dnnapi.com/contentURL路径、URL查询或请求正文中包含特定的信息,以及HTTP报头中的API键。结果在响应正文中从服务器发回。
结构化内容具有用于内容类型、内容项、已发布内容项、可视化工具引擎、可视化工具定义和可视化工具实例的api。
授权
在你的应用程序可以访问一个网站的内容类型和项目之前,该网站的主机/超级用户必须为你提供该网站的API密钥。API键可以被授予属于其关联站点的内容项和/或内容类型的只读或读写权限。
在请求的HTTP报头中,必须包含授权设置;例如,“授权:承载myAPIkey”。
HTTP请求
每个API都是一个HTTP请求方法:GET、POST、PUT或DELETE。示例:结构化内容微服务下的ContentTypes组允许你做以下事情:
- 获取所有项或特定项的列表
- POST创建一个新项
- PUT来更新现有的项
- DELETE删除现有项
项可以是内容类型、内容项、发布的内容项、可视化器或可视化器实例。
重要的是:Evoq站点的所有API HTTP请求必须转到https://dnnapi.com/content.
微服务期望API的参数位于以下位置之一:
- URL查询。如果API根据一组条件检索(GET)项列表,则这些条件将在URL的查询部分中指定为可选的键-值对。
- URL路径。如果API检索(GET)、修改(PUT)或删除(DELETE)特定的项,则该项的ID通常会添加到URL路径中。
- 消息体。如果API创建(POST)或修改(PUT)项,则新项(POST)的属性或现有项(PUT)的新属性将在请求正文中的json序列化数据传输对象(DTO)中指定。DTO中的字段因项类型而异。
HTTP方法 | 客观的 | 典型URL路径 | HTTP的身体 |
---|---|---|---|
得到 | 项目清单 | https://dnnapi.com/content/api/apiname?场=价值 | (不是必需的)。 |
得到 | 特殊的项目 | https://dnnapi.com/content/api/apiname/itemID | (不是必需的)。 |
帖子 | 特殊的项目 | https://dnnapi.com/content/api/apiname/itemID?发布= TRUE | JSON DTO |
把 | 特殊的项目 | https://dnnapi.com/content/api/apiname/itemID?发布= TRUE | JSON DTO |
删除 | 特殊的项目 | https://dnnapi.com/content/api/apiname/itemID | (不是必需的)。 |
HTTP响应
如果API返回一个项目或项目列表,则结果是响应正文中的json序列化DTO。
如果结果是一个列表,响应的主体是一个JSON对象,包含以下内容:
- 一个文档数组,其中包含JSON对象中每个项的信息,以及
- 一个totalResultCount其值表示返回的项数。
如果结果是单个项,则响应的主体是仅包含该项的JSON对象。
获取项目ID
每个项目都有一个唯一的ID来标识它,不管它是什么类型。许多api都需要所处理的特定项的ID。
您可以通过执行筛选后的GET并解析响应正文来确定特定项的ID。示例:GET /api/ContentTypes api返回一个json格式的列表,该列表与URL查询中指定的条件匹配。结果列表的每个元素都包含一个带有键的对id
.
例子
属性更新内容项把/ api / ContentItems / {id}API,它接受三个参数:
id
.(string)路径中必填。contentItem
.(json格式的字符串)必须作为请求体。发布
.(boolean) URL查询中的可选参数。
- 如果您不知道内容项的ID,请使用获得/ api / ContentItems使用与所需条件匹配的参数。然后从返回的列表中找到所需的内容项。返回的内容项对象列表的格式如下:
{"documents": [{"id": "11111111-…","contentTypeId": "myContentType", "contentTypeName": "myContentType", "name": "myContentItemName", "description": "string", "language": "string", "alreadyPublished": true, "details": {}, "currentVersion": 0, "usage ": 0, "createdAt": "string", "createdBy": {"id": "string", "name": "string", "thumbnail": "string"}, "updatedAt": "string", "updatedBy": "StructuredContent.Models "。用户信息”、“stateId”:0,“标签”:[“标签1”、“标签2”,“tag3”),“clientReferenceId ": "字符串"},{" id ": " 22222222 -...", ...}, {"id": "33333333-…",…}……], "totalResultCount": "string"}
- 如果知道内容项的ID,请使用获得/ api / ContentItems / {id}.返回的内容项对象的格式如下:
{"id": "11111111-…","contentTypeId": "string", "contentTypeName": "string", "name": "string", "description": "string", "language": "string", "alreadyPublished": true, "details": {}, "currentVersion": 0, "usage ": 0, "createdAt": "string", "createdBy": {"id": "string", "name": "string", "thumbnail": "string"}, "updatedAt": "string", "updatedBy": "StructuredContent.Models "。UserInfo", "stateId": 0, "tags": ["tag1", "tag2", "tag3"], "clientReferenceId": "string"}
- 从返回的内容项对象复制值,并将它们粘贴到您自己的PUT请求体中。然后替换您想要更改的值。body参数必须为如下格式:
{"id": "11111111-…","contentTypeId": "string", "contentTypeName": "string", "name": "我的新名字","description": "我的新描述就在这里","language": "string", "alreadyPublished": true, "details": {}, "currentVersion": 0, "usage ": 0, "createdAt": "string", "createdBy": {"id": "string", "name": "string", "thumbnail": "string"}, "updatedAt": "string", "updatedBy": "StructuredContent.Models. "UserInfo", "stateId": 0, "tags": ["tag1", "tag2", "tag3", "我的新标签"],"clientReferenceId": "string"}
注意:不能修改ID。 - 构造PUT请求的URL,以包含路径参数(id)和可选查询参数(发布).例子:如果id是"11111111-1111-1111",并且您希望立即发布更改,则URL将如下:
https://dnnapi.com/content/api/ContentItems/11111111-1111-1111?publish=true
记住:在报头中包含身份验证令牌。