flea-frame-jersey使用之Flea RESTful接口服务端接入

Flea RESTful接口服务端接入

本篇介绍 flea-frame-jersey模块下的flea-frame-jersey-server 子模块,该模块封装了通用的POST、PUT、DELETE 和 GET资源。

服务端依赖

项目地址可至GitHub 查看 flea-frame-jersey-server

	<!-- FLEA FRAME JERSEY SERVER-->
    <dependency>
        <groupId>com.huazie.frame</groupId>
        <artifactId>flea-frame-jersey-server</artifactId>
        <version>1.0.0</version>
    </dependency>

服务端接入步骤

  1. 服务端自定义资源入口类,继承 FleaResourceConfig
  2. 服务端自定义资源,并配置到资源表中;
  3. 服务端自定义资源服务,并配置到资源服务表中;
  4. 服务端完成资源服务的业务逻辑开发,配置国际码和错误码映射关系。

具体接入讲解

1. 资源入口类定义

import com.huazie.frame.jersey.server.core.FleaResourceConfig;

import javax.ws.rs.ApplicationPath;

/**
 * <p> FleaFS 资源入口 </p>
 *
 * @author huazie
 * @version 1.0.0
 * @since 1.0.0
 */
@ApplicationPath("/fleafs/*")
public class FleaFSResourceConfig extends FleaResourceConfig {
    
    

    /**
     * <p> 无参构造方法 </p>
     *
     * @since 1.0.0
     */
    public FleaFSResourceConfig() {
    
    
        super();
        // 这里加入自定义的配置信息
    }
}

2. 资源定义

REST服务的核心是对外公布的资源API。如下 DownloadResource 资源类由注解Path修饰,其资源路径为 download。

/**
 * <p> 下载资源类 </p>
 *
 * @author huazie
 * @version 1.0.0
 * @since 1.0.0
 */
@Path("download")
public class DownloadResource extends Resource implements JerseyGetResource, JerseyPostResource {
    
    

    @Override
    public FleaJerseyResponse doGetResource(String requestData) {
    
    
        return doResource(requestData);
    }

    @Override
    public FleaJerseyResponse doPostResource(FleaJerseyRequest request) {
    
    
        return doResource(request);
    }
}

有了资源类,下面就需要配置资源;资源配置在 flea_jersey_resource 表中。新增如下配置:
在这里插入图片描述
应用服务启动后,FleaFSResourceConfig 会扫描所有定义的资源包,即将如上resource_packages 字段定义的包都扫描一遍,这样这些包内所有资源类所提供的资源路径将被映射到内存中。详细内容可参考 FleaResourceConfig

3. 资源服务定义

3.1 资源服务接口
public interface IFleaDownloadSV {
    
    

    /**
     * <p> 下载授权 </p>
     *
     * @param input 下载授权业务入参
     * @return 下载授权业务出参
     * @throws Exception
     * @since 1.0.0
     */
    OutputDownloadAuthInfo downloadAuth(InputDownloadAuthInfo input) throws Exception;
}
3.2 资源服务实现类
/**
 * <p> Flea下载服务实现类 </p>
 *
 * @author huazie
 * @version 1.0.0
 * @since 1.0.0
 */
@Service
public class FleaDownloadSVImpl implements IFleaDownloadSV {
    
    

    @Override
    public OutputDownloadAuthInfo downloadAuth(InputDownloadAuthInfo input) throws Exception {
    
    
        return null;
    }
}
3.3 资源服务配置

资源服务配置在 flea_jersey_res_service 表中。
在这里插入图片描述

字段名 中文描述
service_code 服务编码
resource_code 资源编码
service_interfaces 资源服务接口类
service_method 资源服务方法
service_input 资源服务入参
service_output 资源服务出参
3.4 资源服务调用

上述资源服务调用逻辑, 可参考 服务调用过滤器 InvokeServiceFilter

4. 资源服务业务逻辑开发

	private static final Logger LOGGER = LoggerFactory.getLogger(FleaDownloadSVImpl.class);

    @Override
    public OutputDownloadAuthInfo downloadAuth(InputDownloadAuthInfo input) throws Exception {
    
    
        if (LOGGER.isDebugEnabled()) {
    
    
            LOGGER.debug("FleaDownloadSVImpl##downloadAuth(InputDownloadAuthInfo) Start");
        }

        String fileId = input.getFileId();
        if (StringUtils.isBlank(fileId)) {
    
    
            // 入参【{0}】不能为空
            throw new ServiceException("ERROR-SERVICE0000000001", "fileId");
        }

        OutputDownloadAuthInfo output = new OutputDownloadAuthInfo();
        // 演示直接塞了一个随机数
        output.setToken(RandomCode.toUUID());

        if (LOGGER.isDebugEnabled()) {
    
    
            LOGGER.debug("FleaDownloadSVImpl##downloadAuth(InputDownloadAuthInfo) End");
        }

        return output;
    }

代码中出现 ERROR-SERVICE0000000001 的异常,需要配置如下国际码和错误码的映射关系: (国际码和错误码映射配置表 flea_jersey_i18n_error_mapping
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/u012855229/article/details/102892824