Skip to content

1.平台管理-需求说明

1.1.平台管理前端

查看资料中的admin-web文件夹,使用nginx部署

nginx中的配置为:heima-admin.conf

nginx
upstream  heima-admin-gateway{
    server localhost:51603;
}

server {
	listen 8803;
	location / {
		root /opt/homebrew/var/www/admin-web/;
		index index.html;
	}
	
	location ~/service_6001/(.*) {
		proxy_pass http://heima-admin-gateway/$1;
		proxy_set_header HOST $host;  # 不改变源请求头的值
		proxy_pass_request_body on;  #开启获取请求体
		proxy_pass_request_headers on;  #开启获取请求头
		proxy_set_header X-Real-IP $remote_addr;   # 记录真实发出请求的客户端IP
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  #记录代理信息
	}
}

1.2.登录及网关

1.登录

平台管理的表,请查看资料中导入到数据库中 leadnews_admin.sql

image-20210725225604300

  • 用户根据用户名和密码登录
  • 密码需要手动加盐验证
  • 需要返回用户的token和用户信息

2.网关

平台管理端,是作为平台管理员使用的后台服务,所有后台的请求,都应该经过网关访问,需要创建平台管理的网关,并使用nacos配置

  • 需要校验jwt

  • 路由其他微服务

1.3.频道管理

1.新增

image-20210725225940936

  • 前台输入内容进行频道的保存
  • 频道名词不能重复

2.查询列表

image-20210725230126215

  • 查询需要按照创建时间倒序查询
  • 按照频道名称模糊查询
  • 可以按照状态进行精确查找(1:启用 true 0:禁用 false)
  • 分页查询

2.3.修改

image-20210725230556844

  • 点击编辑后可以修改频道
  • 如果频道被引用则不能禁用
2.4)删除

只有禁用的频道才能删除

1.4.敏感词管理

3.1)新增

image-20210725230741203

  • 弹出的输入框,输入敏感词可直接保存
  • 已存在的敏感词则不能保存
3.2)查询列表

image-20210725230914763

  • 查询需要按照创建时间倒序查询
  • 按照敏感词名称模糊查询
  • 分页查询
3.3)修改

image-20210725230942502

3.4)删除

直接删除即可

1.5.用户认证审核

  • 在app端的个人中心用户可以实名认证,需要材料为:姓名、身份证号、身份证正面照、身份证反面照、手持照片、活体照片(通过微笑、眨眼、张嘴、摇头、点头等组合动作,确保操作的为真实活体人脸。),当用户提交审核后就到了后端让运营管理人员进行审核
  • 平台运营端查看用户认证信息,进行审核,其中审核包括了用户身份审核,需要对接公安系统校验身份证信息
  • 用户通过审核后需要开通自媒体账号(该账号的用户名和密码与app一致)
4.1)分页查询认证列表

image-20210725231452092

  • 可根据审核状态条件查询
  • 需要分页查询
4.2)审核

​ 人工审核 ​ 拒绝 ​ 审核成功

1.6.文章人工审核

自媒体文章如果没有自动审核成功,而是到了人工审核(自媒体文章状态为3),需要在admin端人工处理文章的审核

  • 平台管理员可以查看待人工审核的文章信息,如果存在违规内容则驳回(状态改为2,文章审核失败)
  • 平台管理员可以查看待人工审核的文章信息,如果不存在违规,则需要创建app端的文章信息,并更新自媒体文章的状态

也可以通过点击查看按钮,查看文章详细信息,查看详情后可以根据内容判断是否需要通过审核

5.1)文章列表查询

image-20210725233328453

  • 分页查询自媒体文章
  • 可以按照标题模糊查询
  • 可以按照审核状态进行精确检索
  • 文章查询按照创建时间倒序查询
  • 注意:需要展示作者名称
5.2)查询文章详情

image-20210725233521821

  • 可以查看文章详细内容
  • 注意:需要展示作者名称
5.3)人工审核
5.3.1) 拒绝

image-20210726013458078

拒绝以后需要给出原因,并修改文章的状态为2

5.3.2)审核成功

image-20210726013527654

需要创建app端的文章信息,并更新自媒体文章的状态

2.平台管理-接口文档

简介:黑马头条API文档

1.登录

接口地址:/login/in

请求方式:POST

请求数据类型:application/json

响应数据类型:*/*

接口描述:

请求示例:

javascript
{
	"name": "",
	"password": ""
}

请求参数:

参数名称参数说明in是否必须数据类型schema
dtodtobodytrueAdUserDtoAdUserDto
  nametruestring
  passwordtruestring

响应状态:

状态码说明schema
200OKResponseResult
201Created
401Unauthorized
403Forbidden
404Not Found

响应参数:

参数名称参数说明类型schema
codeinteger(int32)integer(int32)
dataobject
errorMessagestring
hoststring

响应示例:

javascript
{
    "host":null,
    "code":1002,
    "errorMessage":"数据不存在",
    "data":null
}
{
    "host":null,
    "code":2,
    "errorMessage":"密码错误",
    "data":null
}

{
    "host":null,
    "code":200,
    "errorMessage":"操作成功",
    "data":{
        "user":{
            "id":"3",
            "name":"guest",
            "password":"",
            "salt":"",
            "nickname":"gu",
            "image":null,
            "phone":"13412345676",
            "status":1,
            "email":"guest@qq.com",
            "loginTime":1596092403000,
            "createdTime":1596092406000
        },
        "token":"eyJhbGciOiJIUzUxMiIsInppcCI6IkdaSVAifQ.H4sIAAAAAAAAADWLQQrEIAwA_5JzBTUaa3-jNGUtFIRYaFn2700Pe5thmC_so8ECawobbnE2jiubQJlMRe8Mxcghc6aIHiZoZcDiyCePwVqaQM6qt9wy-Hi7iOqH21HUyrmqld6V-er_M9F7Nm34ewAJrbr_gAAAAA.TxoXtzsWAdaqCLWeMUdSnMngZSXndTsoYq6Dz5_r_SDZWcMp8ZS2BJhxoRVHG4KxvOn2ZN3MATemX2EZ4KnrLw"
    }
}

2.敏感词

2.1删除

接口地址:/api/v1/sensitive/del/{id}

请求方式:DELETE

请求数据类型:*

响应数据类型:*/*

接口描述:

请求参数:

参数名称参数说明in是否必须数据类型schema
ididpathtrueinteger(int32)

响应状态:

状态码说明schema
200OKResponseResult
204No Content
401Unauthorized
403Forbidden

响应参数:

参数名称参数说明类型schema
codeinteger(int32)integer(int32)
dataobject
errorMessagestring
hoststring

响应示例:

javascript
{
	"code": 0,
	"data": {},
	"errorMessage": "",
	"host": ""
}

2.2查询列表

接口地址:/api/v1/sensitive/list

请求方式:POST

请求数据类型:application/json

响应数据类型:*/*

接口描述:

请求示例:

javascript
{
	"name": "",
	"page": 0,
	"size": 0
}

请求参数:

参数名称参数说明in是否必须数据类型schema
dtodtobodytrueSensitiveDtoSensitiveDto
  namefalsestring
  page当前页trueinteger(int32)
  size每页显示条数trueinteger(int32)

响应状态:

状态码说明schema
200OKResponseResult
201Created
401Unauthorized
403Forbidden
404Not Found

响应参数:

参数名称参数说明类型schema
codeinteger(int32)integer(int32)
dataobject
errorMessagestring
hoststring

响应示例:

javascript
{
    "host":null,
    "code":200,
    "errorMessage":null,
    "data":[
        {
            "id":"3109",
            "sensitives":"无抵押贷款",
            "createdTime":1621739441000
        },
        {
            "id":"3110",
            "sensitives":"广告代理",
            "createdTime":1621739459000
        },
        {
            "id":"3111",
            "sensitives":"代开发票",
            "createdTime":1621739478000
        },
        {
            "id":"3112",
            "sensitives":"蚁力神",
            "createdTime":1621739499000
        },
        {
            "id":"3113",
            "sensitives":"售肾",
            "createdTime":1621739528000
        }
    ],
    "currentPage":1,
    "size":10,
    "total":16
}

2.3保存

接口地址:/api/v1/sensitive/save

请求方式:POST

请求数据类型:application/json

响应数据类型:*/*

接口描述:

请求示例:

javascript
{
	"createdTime": "",
	"id": 0,
	"sensitives": ""
}

请求参数:

参数名称参数说明in是否必须数据类型schema
adSensitiveadSensitivebodytrueAdSensitiveAdSensitive
  createdTimefalsestring(date-time)
  idfalseinteger(int32)
  sensitivesfalsestring

响应状态:

状态码说明schema
200OKResponseResult
201Created
401Unauthorized
403Forbidden
404Not Found

响应参数:

参数名称参数说明类型schema
codeinteger(int32)integer(int32)
dataobject
errorMessagestring
hoststring

响应示例:

javascript
{
	"code": 0,
	"data": {},
	"errorMessage": "",
	"host": ""
}

2.4 修改

接口地址:/api/v1/sensitive/update

请求方式:POST

请求数据类型:application/json

响应数据类型:*/*

接口描述:

请求示例:

javascript
{
	"createdTime": "",
	"id": 0,
	"sensitives": ""
}

请求参数:

参数名称参数说明in是否必须数据类型schema
adSensitiveadSensitivebodytrueAdSensitiveAdSensitive
  createdTimefalsestring(date-time)
  idfalseinteger(int32)
  sensitivesfalsestring

响应状态:

状态码说明schema
200OKResponseResult
201Created
401Unauthorized
403Forbidden
404Not Found

响应参数:

参数名称参数说明类型schema
codeinteger(int32)integer(int32)
dataobject
errorMessagestring
hoststring

响应示例:

javascript
{
	"code": 0,
	"data": {},
	"errorMessage": "",
	"host": ""
}

3频道管理

3.1 删除频道

接口地址:/api/v1/channel/del/{id}

请求方式:GET

请求数据类型:*

响应数据类型:*/*

接口描述:

请求参数:

参数名称参数说明in是否必须数据类型schema
ididpathtrueinteger(int32)

响应状态:

状态码说明schema
200OKResponseResult
401Unauthorized
403Forbidden
404Not Found

响应参数:

参数名称参数说明类型schema
codeinteger(int32)integer(int32)
dataobject
errorMessagestring
hoststring

响应示例:

javascript
{
	"code": 0,
	"data": {},
	"errorMessage": "",
	"host": ""
}

3.2频道名称模糊分页查询

接口地址:/api/v1/channel/list

请求方式:POST

请求数据类型:application/json

响应数据类型:*/*

接口描述:

请求示例:

javascript
{
	"name": "",
	"page": 0,
	"size": 0
}

请求参数:

参数名称参数说明in是否必须数据类型schema
dtodtobodytrueChannelDtoChannelDto
  name频道名称falsestring
  page当前页trueinteger(int32)
  size每页显示条数trueinteger(int32)

响应状态:

状态码说明schema
200OKResponseResult
201Created
401Unauthorized
403Forbidden
404Not Found

响应参数:

参数名称参数说明类型schema
codeinteger(int32)integer(int32)
dataobject
errorMessagestring
hoststring

响应示例:

javascript
{
	"code": 0,
	"data": {},
	"errorMessage": "",
	"host": ""
}

3.3保存频道

接口地址:/api/v1/channel/save

请求方式:POST

请求数据类型:application/json

响应数据类型:*/*

接口描述:

请求示例:

javascript
{
	"createdTime": "",
	"description": "",
	"id": 0,
	"isDefault": true,
	"name": "",
	"ord": 0,
	"status": true
}

请求参数:

参数名称参数说明in是否必须数据类型schema
adChanneladChannelbodytrueAdChannelAdChannel
  createdTimefalsestring(date-time)
  descriptionfalsestring
  idfalseinteger(int32)
  isDefaultfalseboolean
  namefalsestring
  ordfalseinteger(int32)
  statusfalseboolean

响应状态:

状态码说明schema
200OKResponseResult
201Created
401Unauthorized
403Forbidden
404Not Found

响应参数:

参数名称参数说明类型schema
codeinteger(int32)integer(int32)
dataobject
errorMessagestring
hoststring

响应示例:

javascript
{
	"code": 0,
	"data": {},
	"errorMessage": "",
	"host": ""
}

3.4 修改频道

接口地址:/api/v1/channel/update

请求方式:POST

请求数据类型:application/json

响应数据类型:*/*

接口描述:

请求示例:

javascript
{
	"createdTime": "",
	"description": "",
	"id": 0,
	"isDefault": true,
	"name": "",
	"ord": 0,
	"status": true
}

请求参数:

参数名称参数说明in是否必须数据类型schema
adChanneladChannelbodytrueAdChannelAdChannel
  createdTimefalsestring(date-time)
  descriptionfalsestring
  idfalseinteger(int32)
  isDefaultfalseboolean
  namefalsestring
  ordfalseinteger(int32)
  statusfalseboolean

响应状态:

状态码说明schema
200OKResponseResult
201Created
401Unauthorized
403Forbidden
404Not Found

响应参数:

参数名称参数说明类型schema
codeinteger(int32)integer(int32)
dataobject
errorMessagestring
hoststring

响应示例:

javascript
{
	"code": 0,
	"data": {},
	"errorMessage": "",
	"host": ""
}

4 用户审核

4.1 查询列表

接口地址:/api/v1/auth/list

请求方式:POST

请求数据类型:application/json

响应数据类型:*/*

接口描述:

请求示例:

javascript
{
	"id": 0,
	"msg": "",
	"page": 0,
	"size": 0,
	"status": 0
}

请求参数:

参数名称参数说明in是否必须数据类型schema
dtodtobodytrueAuthDtoAuthDto
  idfalseinteger(int32)
  msgfalsestring
  page当前页trueinteger(int32)
  size每页显示条数trueinteger(int32)
  statusfalseinteger(int32)

响应状态:

状态码说明schema
200OKResponseResult
201Created
401Unauthorized
403Forbidden
404Not Found

响应参数:

参数名称参数说明类型schema
codeinteger(int32)integer(int32)
dataobject
errorMessagestring
hoststring

响应示例:

javascript
{
	"code": 0,
	"data": {},
	"errorMessage": "",
	"host": ""
}

4.2 审核失败

接口地址:/api/v1/auth/authFail

请求方式:POST

请求数据类型:application/json

响应数据类型:*/*

接口描述:

请求示例:

javascript
{
	"id": 0,
	"msg": "",
	"page": 0,
	"size": 0,
	"status": 0
}

请求参数:

参数名称参数说明in是否必须数据类型schema
dtodtobodytrueAuthDtoAuthDto
  idfalseinteger(int32)
  msgfalsestring
  page当前页trueinteger(int32)
  size每页显示条数trueinteger(int32)
  statusfalseinteger(int32)

响应状态:

状态码说明schema
200OKResponseResult
201Created
401Unauthorized
403Forbidden
404Not Found

响应参数:

参数名称参数说明类型schema
codeinteger(int32)integer(int32)
dataobject
errorMessagestring
hoststring

响应示例:

javascript
{
	"code": 0,
	"data": {},
	"errorMessage": "",
	"host": ""
}

4.3 审核成功

接口地址:/api/v1/auth/authPass

请求方式:POST

请求数据类型:application/json

响应数据类型:*/*

接口描述:

请求示例:

javascript
{
	"id": 0,
	"msg": "",
	"page": 0,
	"size": 0,
	"status": 0
}

请求参数:

参数名称参数说明in是否必须数据类型schema
dtodtobodytrueAuthDtoAuthDto
  idfalseinteger(int32)
  msgfalsestring
  page当前页trueinteger(int32)
  size每页显示条数trueinteger(int32)
  statusfalseinteger(int32)

响应状态:

状态码说明schema
200OKResponseResult
201Created
401Unauthorized
403Forbidden
404Not Found

响应参数:

参数名称参数说明类型schema
codeinteger(int32)integer(int32)
dataobject
errorMessagestring
hoststring

响应示例:

javascript
{
	"code": 0,
	"data": {},
	"errorMessage": "",
	"host": ""
}

5 自媒体文章人工审核

5.1 查询文章列表

接口地址:/api/v1/news/list_vo

请求方式:POST

请求数据类型:application/json

响应数据类型:*/*

接口描述:

请求示例:

javascript
{
	"id": 0,
	"msg": "",
	"page": 0,
	"size": 0,
	"status": 0,
	"title": ""
}

请求参数:

参数名称参数说明in是否必须数据类型schema
dtodtobodytrueNewsAuthDtoNewsAuthDto
  idfalseinteger(int32)
  msgfalsestring
  page当前页trueinteger(int32)
  size每页显示条数trueinteger(int32)
  statusfalseinteger(int32)
  titlefalsestring

响应状态:

状态码说明schema
200OKResponseResult
201Created
401Unauthorized
403Forbidden
404Not Found

响应参数:

参数名称参数说明类型schema
codeinteger(int32)integer(int32)
dataobject
errorMessagestring
hoststring

响应示例:

javascript
{
    "host":"",
    "code":200,
    "errorMessage":null,
    "data":[
        {
            "id":"6225",
            "userId":1102,
            "title":"“真”项目课程对找工作有什么帮助?",
            "content":"[{\"type\":\"text\",\"value\":\"找工作,企业重点问的是项目经验,更是HR筛选的“第一门槛”,直接决定了你是否有机会进入面试环节。\\n\\n  项目经验更是评定“个人能力/技能”真实性的“证据”,反映了求职者某个方面的实际动手能力、对某个领域或某种技能的掌握程度。\"},{\"type\":\"image\",\"value\":\"http://192.168.200.130:9000/leadnews/2021/4/20210418/7d0911a41a3745efa8509a87f234813c.jpg\"},{\"type\":\"text\",\"value\":\"很多经过培训期望快速上岗的程序员,靠着培训机构“辅导”顺利经过面试官对于“项目经验”的考核上岗后,在面对“有限时间”“复杂业务”“新项目需求”等多项标签加持的工作任务,却往往不知从何下手或开发进度极其缓慢。最终结果就是:熬不过试用期。\\n\\n  从而也引发了企业对于“培训出身程序员”的“有色眼光”。你甚至也一度怀疑“IT培训班出来的人真的不行吗?”\"}]",
            "type":1,
            "channelId":1,
            "labels":"项目课程",
            "createdTime":1618762090000,
            "submitedTime":1618762090000,
            "status":9,
            "publishTime":1618762085000,
            "reason":"审核成功",
            "articleId":1383828014629179393,
            "images":"http://192.168.200.130:9000/leadnews/2021/04/26/ef3cbe458db249f7bd6fb4339e593e55.jpg",
            "enable":1,
            "authorName":"admin"
        },
        {
            "id":"6226",
            "userId":1102,
            "title":"学IT,为什么要学项目课程?",
            "content":"[{\"type\":\"text\",\"value\":\"在选择IT培训机构时,你应该有注意到,很多机构都将“项目课程”作为培训中的重点。那么,为什么要学习项目课程?为什么项目课程才是IT培训课程的核心?\\n\\n  1\\n\\n  在这个靠“技术经验说话”的IT行业里,假如你是一个计算机或IT相关专业毕业生,在没有实际项目开发经验的情况下,“找到第一份全职工作”可能是你职业生涯中遇到的最大挑战。\\n\\n  为什么说找第一份工作很难?\\n\\n  主要在于:实际企业中用到的软件开发知识和在学校所学的知识是完全不同的。假设你已经在学校和同学做过周期长达2-3个月的项目,但真正工作中的团队协作与你在学校中经历的协作也有很多不同。\"},{\"type\":\"image\",\"value\":\"http://192.168.200.130:9000/leadnews/2021/4/20210418/e8113ad756a64ea6808f91130a6cd934.jpg\"},{\"type\":\"text\",\"value\":\"在实际团队中,每一位成员彼此团结一致,为项目的交付而努力,这也意味着你必须要理解好在项目中负责的那部分任务,在规定时间交付还需确保你负责的功能,在所有环境中都能很好地发挥作用,而不仅仅是你的本地机器。\\n\\n  这需要你对项目中的每一行代码严谨要求。学校练习的项目中,对bug的容忍度很大,而在实际工作中是绝对不能容忍的。项目中的任何一个环节都涉及公司利益,任何一个bug都可能影响公司的收入及形象。\"},{\"type\":\"image\",\"value\":\"http://192.168.200.130:9000/leadnews/2021/4/20210418/c7c3d36d25504cf6aecdcd5710261773.jpg\"}]",
            "type":3,
            "channelId":1,
            "labels":"项目课程",
            "createdTime":1618762438000,
            "submitedTime":1618762438000,
            "status":1,
            "publishTime":1618762248000,
            "reason":"审核成功",
            "articleId":1383827995813531650,
            "images":"http://192.168.200.130:9000/leadnews/2021/04/26/ec893175f18c4261af14df14b83cb25f.jpg",
            "enable":1,
            "authorName":"admin"
        }
    ],
    "currentPage":1,
    "size":10,
    "total":455
}

5.2 查询文章详情

接口地址:/api/v1/news/one_vo/{id}

请求方式:GET

请求数据类型:*

响应数据类型:*/*

接口描述:

请求参数:

参数名称参数说明in是否必须数据类型schema
ididpathtrueinteger(int32)

响应状态:

状态码说明schema
200OKResponseResult
401Unauthorized
403Forbidden
404Not Found

响应参数:

参数名称参数说明类型schema
codeinteger(int32)integer(int32)
dataobject
errorMessagestring
hoststring

响应示例:

javascript
{
    "host":"",
    "code":200,
    "errorMessage":null,
    "data":{
        "id":"6225",
        "userId":1102,
        "title":"“真”项目课程对找工作有什么帮助?",
        "content":"[{\"type\":\"text\",\"value\":\"找工作,企业重点问的是项目经验,更是HR筛选的“第一门槛”,直接决定了你是否有机会进入面试环节。\\n\\n  项目经验更是评定“个人能力/技能”真实性的“证据”,反映了求职者某个方面的实际动手能力、对某个领域或某种技能的掌握程度。\"},{\"type\":\"image\",\"value\":\"http://192.168.200.130:9000/leadnews/2021/4/20210418/7d0911a41a3745efa8509a87f234813c.jpg\"},{\"type\":\"text\",\"value\":\"很多经过培训期望快速上岗的程序员,靠着培训机构“辅导”顺利经过面试官对于“项目经验”的考核上岗后,在面对“有限时间”“复杂业务”“新项目需求”等多项标签加持的工作任务,却往往不知从何下手或开发进度极其缓慢。最终结果就是:熬不过试用期。\\n\\n  从而也引发了企业对于“培训出身程序员”的“有色眼光”。你甚至也一度怀疑“IT培训班出来的人真的不行吗?”\"}]",
        "type":1,
        "channelId":1,
        "labels":"项目课程",
        "createdTime":1618762090000,
        "submitedTime":1618762090000,
        "status":9,
        "publishTime":1618762085000,
        "reason":"审核成功",
        "articleId":1383828014629179393,
        "images":"http://192.168.200.130:9000/leadnews/2021/04/26/ef3cbe458db249f7bd6fb4339e593e55.jpg",
        "enable":1,
        "authorName":"admin"
    }
}

5.3 审核失败

接口地址:/api/v1/news/auth_fail

请求方式:POST

请求数据类型:application/json

响应数据类型:*/*

接口描述:

请求示例:

javascript
{
	"id": 0,
	"msg": ""
}

请求参数:

参数名称参数说明in是否必须数据类型schema
dtodtobodytrueNewsAuthDtoNewsAuthDto
  idfalseinteger(int32)
  msgfalsestring
  page当前页trueinteger(int32)
  size每页显示条数trueinteger(int32)
  statusfalseinteger(int32)
  titlefalsestring

响应状态:

状态码说明schema
200OKResponseResult
201Created
401Unauthorized
403Forbidden
404Not Found

响应参数:

参数名称参数说明类型schema
codeinteger(int32)integer(int32)
dataobject
errorMessagestring
hoststring

响应示例:

javascript
{
	"code": 0,
	"data": {},
	"errorMessage": "",
	"host": ""
}

5.4 审核成功

接口地址:/api/v1/news/auth_pass

请求方式:POST

请求数据类型:application/json

响应数据类型:*/*

接口描述:

请求示例:

javascript
{
	"id": 0,
	"msg": ""
}

请求参数:

参数名称参数说明in是否必须数据类型schema
dtodtobodytrueNewsAuthDtoNewsAuthDto
  idfalseinteger(int32)
  msgfalsestring
  page当前页trueinteger(int32)
  size每页显示条数trueinteger(int32)
  statusfalseinteger(int32)
  titlefalsestring

响应状态:

状态码说明schema
200OKResponseResult
201Created
401Unauthorized
403Forbidden
404Not Found

响应参数:

参数名称参数说明类型schema
codeinteger(int32)integer(int32)
dataobject
errorMessagestring
hoststring

响应示例:

javascript
{
	"code": 0,
	"data": {},
	"errorMessage": "",
	"host": ""
}