• 功能总体介绍

    什么是接口平台的服务?

    服务不一定指一个微服务,它是一个逻辑划分。

    此处服务的概念,可以理解为一个服务由一组具备业务关联的接口组成。

    例如:

    注册一个华为OCR图像识别服务,该服务下可含有通用表格识别、通用文字识别、身份证识别等一系列接口。

    服务注册

    服务注册类别分为四类:内部接口服务、外部接口服务、组合接口服务、数据源接口服务注册。

    服务类型分为:REST类型、SOAP类型。

    列表字段:

    查询字段:

    点击按钮可根据已有条件筛选出对应信息。
    点击按钮可重置查询条件。

    操作列

    删除:点击删除按钮,可删除服务。
    编辑:点击编辑按钮,可跳转到编辑页面对服务相关属性进行编辑。

    服务注册页面图示

    接口新建

    字段介绍:

    接口文档

    参数信息:

    注意: 非基本类型可编辑参数候选值,一旦候选值确定。用例便只能从候选值里面取数据。

    示例:

    详细说明:

    以上信息可点击预览按钮进行预览。

    测试用例

    测试用例提供一键生成、一键执行、代码预览等功能。

    测试用例点击新建会自动生成一个测试用例,其命名根据时间信息组合生成,自动带出接口文档中维护好的参数信息。

    注意:测试用例中的body参数信息无法新建,由接口文档中维护的body参数自动带出。

    列表字段:

    操作列:

    注册新服务示例

    首先,假设一个场景,在组织管理>员工定义>新建>保存时,有一个内部“创建员工”接口,URL : http://hzeronb.saas.hand-china.com/hpfm/v1/{organizationId}/employees?flexModelCode=HPFM.EMPLOYEE&tenantId={organizationId}

    该内部接口,

    接口地址为:/v1/{organizationId}/employees

    服务编码为:hzero-platform.employee.createOrUpdateEmployee

    请求头部为:

    Content-Type:application/json

    请求参数为:

    [{“tenantId”:0,“cid”:"",“employeeNum”:“test04151733”,“name”:“test04151733”,“email”:“test04151733@qq.com”,“mobile”:“xxxx”,“gender”:0,“enabledFlag”:1,"_status":“create”}]

    Token为:e19b5064-84f4-44cc-ac84-66fc1abd68f9,TOKEN可页面抓取,不定时过期。

    post调用示例:

    如何注册上述内部接口对应的服务?

    1、接口平台>接口配置>服务注册>点击新建

    2、填写必输字段,例如:

    服务代码:TEST04071550,可自定义,此处命名为示例。

    服务名称:demo服务TEST04071550,可自定义,此处命名为示例。

    服务类型:REST

    服务类别:内部接口

    服务地址:hzero-platform,先点击LOV,搜索服务编码:hzero-platform,服务路径对应/hpfm/**

    3、点击注册

    4、接口配置>点击新建,搜索服务编码:hzero-platform.employee.createOrUpdateEmployee,对应接口地址/v1/{organizationId}/employees,即可选择确定

    5、到此步,服务注册已经完成。

    如何调用平台接口?

    可在服务注册详情页,查看到上述服务接口发布地址为:/v1/rest/invoke?namespace=HZERO&serverCode=TEST04071550&interfaceCode=hzero-platform.employee.createOrUpdateEmployee

    namespace对应命名空间。

    serverCode对应服务代码。

    interfaceCode对应接口编码。

    通过接口平台生成的平台接口URL为:http://hzeronb.saas.hand-china.com/hitf + 接口发布地址。

    调用下面接口:

    http://hzeronb.saas.hand-china.com/hitf/v1/rest/invoke?namespace=HZERO&serverCode=TEST04151433&interfaceCode=hzero-platform.employee.createOrUpdateEmployee

    即可创建员工。

    其请求方式必须为:POST。

    请求头部为:

    Content-Type:application/json

    此接口由于是内部接口,TOKEN为HZERO用户对应TOKEN,可在HZERO中通过浏览器抓取。

    请求参数为:

    {
    	"pathVariableMap":{
    		"organizationId": 0
    	},
    	"requestParamMap":{
    		"flexModelCode": "HPFM.EMPLOYEE",
    		"tenantId":0
    	},
    	"payload":"[{\"tenantId\":0,\"cid\":\"\",\"employeeNum\":\"此处自行填写employeeNum\",\"name\":\"此处自行填写name\",\"email\":\"此处自行填写email\",\"mobile\":\"此处自行填写mobile\",\"gender\":0,\"enabledFlag\":1,\"_status\":\"create\"}]"
    }
    

    注意,在postman中调用,此处payload中需为String类型,转义字符“\”不可去掉。

    此时,我们就通过调用平台接口A:

    http://hzeronb.saas.hand-china.com/hitf/v1/rest/invoke?namespace=HZERO&serverCode=TEST04151433&interfaceCode=hzero-platform.employee.createOrUpdateEmployee

    实际上调用了接口B:

    http://hzeronb.saas.hand-china.com/hpfm/v1/0/employees?flexModelCode=HPFM.EMPLOYEE&tenantId=0

    实现了接口A和B之间的映射关系。

    平台接口调用说明

    示例:

    原接口:

    http://hzeronb.saas.hand-china.com/hpfm/v1/{organizationId}/employees?flexModelCode=HPFM.EMPLOYEE&tenantId=0

    映射后的平台接口:

    http://hzeronb.saas.hand-china.com/hitf/v1/rest/invoke?namespace=HZERO&serverCode=TEST04151433&interfaceCode=hzero-platform.employee.createOrUpdateEmployee

    在此有人会疑惑,经过接口平台映射出的新接口,原接口中参数organizationId,flexModelCode,tenantId哪去了呢?

    实际上,我们在调用新接口时这些参数都会传入。看看下面便会明白。

    平台接口请求参数说明:

    参数名 说明
    headerParamMap Reqeust Header参数列表
    pathVariableMap 对应接口UrlPath变量列表,例如:上述原接口中参数organizationId可放入其中
    requestParamMap 对应接口请求查询参数列表,例如:上述原接口中参数flexModelCode,tenantId可放入其中
    bodyParamMap 请求body参数列表,针对form_data,url_encoded
    multipartFileMap Form-Data请求时文件参数
    payload 指定payload实体内容,例如 json字符串。可对应上述原接口中请求body
    mediaType 指定payload解析格式,默认为:application/json;charset=UTF-8

    平台接口响应参数说明:

    参数名 说明
    headers 响应头参数
    status 状态
    message 响应消息
    mediaType 指定payload解析格式,默认为:application/json;charset=UTF-8
    payload 业务数据实体内容
    apiInfo API信息
    invokeKey 调用令牌
    statusCode 状态码描述
    statusCodeValue 状态码

    注意,平台接口统一为post请求方式。

    请求报文示例:

    POST /hitf/v1/rest/invoke?namespace=HZERO&serverCode=TEST04151433&interfaceCode=hzero-platform.employee.createOrUpdateEmployee HTTP/1.1
    Host: hzeronb.saas.hand-china.com
    Authorization: Bearer be7b7686-2667-445c-81f9-98b815687b2b
    Content-Type: application/json
    Body:
    {
    	"pathVariableMap":{
    		"organizationId": 0
    	},
    	"requestParamMap":{
    		"flexModelCode": "HPFM.EMPLOYEE",
    		"tenantId":0
    },
    	"payload": "[{\"tenantId\":0,\"cid\":\"\",\"employeeNum\":\"test04151659\",\"name\":\"test04151659\",\"email\":\"test04151659@qq.com\",\"mobile\":\"15207101111\",\"gender\":0,\"enabledFlag\":1,\"_status\":\"create\"}]"
    }
    

    响应报文示例:

    {
        "headers": {},
        "body": null,
        "status": "200",
        "message": "OK",
        "mediaType": null,
        "payload": "{\"failed\":true,\"code\":\"error.code_repeat\",\"message\":\"编码重复\",\"type\":\"error\",\"exception\":\"error.code_repeat\"}",
        "apiInfo": null,
        "targetResponseHeaders": {
            "date": "Tue, 28 Apr 2020 09:56:01 GMT",
            "expires": "0",
            "transfer-encoding": "chunked",
            "x-content-type-options": "nosniff",
            "x-xss-protection": "1; mode=block",
            "x-frame-options": "DENY",
            "connection": "keep-alive",
            "content-type": "application/json;charset=UTF-8",
            "cache-control": "no-cache, no-store, max-age=0, must-revalidate",
            "pragma": "no-cache"
        },
        "invokeKey": "c57a3b7b-ea44-4adf-a735-0738db593fb7",
        "statusCode": "OK",
        "statusCodeValue": 200
    }