Service config

服务配置说明。

Dubbo service 配置

因为服务端是强类型的,所以需要声明类型信息;以及为了自动匹配上下文中的参数,需要声明参数名字(注意此处参数名称并非 Java 接口上的参数名称,而是在前端请求/渲染上下文中的参数名称)。

serviceKey: {
  type: 'dubbo', // 默认就是 dubbo ,因此可以省略
  uri: 'some.domain.package.Interface:method', // 接口类和方法名,注意是 uri 不是 url
  version: '1.0.0', // 注意!此参数为可选,除非服务提供端指明了版本,否则请不要在这里指定版本
  params: [ // 一个数组,与方法上的参数顺序同序
    { type: 'Long', name: 'id' }, // 数组元素为 type 和 name 组成的 object
    { type: 'String', name: 'nick' },
    'email: String' // 也可以写成字符串形式,name: type ,中间空格可选
  ]
}

其中 params 中的 type 可选值为:

  • Boolean: 'java.lang.Boolean',
  • boolean: 'boolean',
  • Integer: 'java.lang.Integer',
  • int: 'int',
  • short: 'short',
  • Short: 'java.lang.Short',
  • byte: 'byte',
  • Byte: 'java.lang.Byte',
  • long: 'long',
  • Long: 'java.lang.Long',
  • double: 'double',
  • Double: 'java.lang.Double',
  • float: 'float',
  • Float: 'java.lang.Float',
  • String: 'java.lang.String',
  • char: 'char',
  • chars: 'char[]',
  • Character: 'java.lang.Character',
  • List: 'java.util.List',
  • Set: 'java.util.Set',
  • Iterator: 'java.util.Iterator',
  • Enumeration: 'java.util.Enumeration',
  • HashMap: 'java.util.HashMap',
  • Map: 'java.util.Map',
  • Dictionary: 'java.util.Dictionary'
  • some.package.Class (任意类型)

Http service 配置

http 调用请参考 extension.md ,使用 registerService 编写自定义服务来实现。

serviceKey: {
  type: 'http', // required
  method: 'POST', // 指定 http method, 如果为非 GET 请求, query 会作为 request body 以 form data 发出,payload会作为request body以json的形式发出(注意非 GET 请求的情况下,payload和query互斥。如果两个都传入会使用payload,以json的形式发出)
  url: 'http://some.domain/path/to/api/{pathVariable}', // http:// 可以省略,使用 {paramName} 来占位, 你也可以给 url 上的参数设置默认值: http://some.domain/path/to/api/{pathVariable:123}
  query: [
    'param', // query 参数,与下面这种方式的区别就是默认 param 和 target 一样
    'param: target', // query 参数,以及对应的上下文中的参数,使用 param 作为 query name,使用上下文中的 target 作为值(可以理解为 param=context[target])
    {
      name: 'param3', // quey 参数
      target: "target1", // 可选参数, 如果没有这个参数默认值为 name
      default: "defaultValue", // 默认值 (可以理解为 param=context[target] || defaultValue)
    },
  ],
  // 用于application/json格式的提交,参数形式与query一致(与query的方式互斥)
  // 处理后提交的格式为:{param: param, param1: target, param3: target1 ?? defaultValue}
  payload: [
    'param',
    'param1: target',
    {
      name: 'param3',
      target: 'target1',
      default: 'defaultValue',
    }
  ],
  // 格式化 处理后的 payload 数据,返回的数据会直接作为请求的 request body
  payloadFormat: (payload) => any

}
// 或者返回一个 function

serviceKey: () => ({
  type: 'http', // required
  method: 'POST', // 指定 http method, 如果为非 GET 请求, query 会作为 request body 以 form data 发出
  url: 'http://some.domain/path/to/api/{pathVariable}', // http:// 可以省略,使用 {paramName} 来占位, 你也可以给 url 上的参数设置默认值: http://some.domain/path/to/api/{pathVariable:123}
  query: [
    'param', // query 参数,与下面这种方式的区别就是默认 param 和 target 一样
    'param: target', // query 参数,以及对应的上下文中的参数,使用 param 作为 query name,使用上下文中的 target 作为值(可以理解为 param=context[target])
    {
      name: 'param3', // quey 参数
      target: "target1", // 可选参数, 如果没有这个参数默认值为 name
      default: "defaultValue", // 默认值 (可以理解为 param=context[target] || defaultValue)
    },
  ],
})

results matching ""

    No results matching ""