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

简介: 本篇介绍 Flea框架下的 flea-jersey-server模块,并提供服务端依赖管理及接入步骤

image.png

引言

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

1. 服务端依赖

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

  <!-- FLEA JERSEY SERVER-->
    <dependency>
        <groupId>com.huazie.fleaframework</groupId>
        <artifactId>flea-jersey-server</artifactId>
        <version>2.0.0</version>
    </dependency>

2. 服务端接入步骤

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

3. 具体接入讲解

3.1 资源入口类定义

/**
 * <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();
        // 这里加入自定义的配置信息
    }
}

3.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 表中。新增如下配置:

image.png

应用服务启动后,FleaFSResourceConfig 会扫描所有定义的资源包,即将如上resource_packages 字段定义的包都扫描一遍,这样这些包内所有资源类所提供的资源路径将被映射到内存中。详细内容可参考 FleaResourceConfig

3.3 资源服务定义

3.3.1 资源服务接口

public interface IFleaDownloadSV {

    /**
     * <p> 下载授权 </p>
     *
     * @param input 下载授权业务入参
     * @return 下载授权业务出参
     * @throws Exception
     * @since 1.0.0
     */
    OutputDownloadAuthInfo downloadAuth(InputDownloadAuthInfo input) throws Exception;
}

3.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.3 资源服务配置

资源服务配置在 flea_jersey_res_service 表中。

image.png

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

3.3.4 资源服务调用

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

3.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;
    }

3.5 国际码和错误码映射

代码中出现 ERROR-SERVICE0000000001 的异常,需要配置如下国际码和错误码的映射关系: (国际码和错误码映射配置表 flea_jersey_i18n_error_mapping

image.png

目录
相关文章
|
5月前
|
XML 物联网 API
服务端和客户端 RESTful 接口上传 Excel 的 Python 代码
本文作者木头左是物联网工程师,分享如何使用 Python 和 Flask-RESTful 构建一个简单的 RESTful API,实现文件上传功能,特别支持Excel文件。通过安装Flask和Flask-RESTful库,创建Flask应用,实现文件上传接口,并将其添加到API。该方法具有简单易用、灵活、可扩展及社区支持等优点。
服务端和客户端 RESTful 接口上传 Excel 的 Python 代码
|
2月前
|
安全 API 开发者
Web 开发新风尚!Python RESTful API 设计与实现,让你的接口更懂开发者心!
在当前的Web开发中,Python因能构建高效简洁的RESTful API而备受青睐,大大提升了开发效率和用户体验。本文将介绍RESTful API的基本原则及其在Python中的实现方法。以Flask为例,演示了如何通过不同的HTTP方法(如GET、POST、PUT、DELETE)来创建、读取、更新和删除用户信息。此示例还包括了基本的路由设置及操作,为开发者提供了清晰的API交互指南。
110 6
|
3月前
|
XML JSON API
RESTful API设计最佳实践:构建高效、可扩展的接口
【8月更文挑战第17天】RESTful API设计是一个涉及多方面因素的复杂过程。通过遵循上述最佳实践,开发者可以构建出更加高效、可扩展、易于维护的API。然而,值得注意的是,最佳实践并非一成不变,随着技术的发展和业务需求的变化,可能需要不断调整和优化API设计。因此,保持对新技术和最佳实践的关注,是成为一名优秀API设计师的关键。
|
4月前
|
API 数据安全/隐私保护 开发者
Web 开发新风尚!Python RESTful API 设计与实现,让你的接口更懂开发者心!
【7月更文挑战第23天】Python的RESTful API设计在Web开发中流行,提升效率与体验。REST强调HTTP方法(GET, POST, PUT, DELETE)操作资源。使用Flask框架可快速实现API,如管理用户信息。示例代码展示如何创建、读取、更新和删除用户,通过不同HTTP方法和URL路径。实际应用中,增加验证、错误处理和权限控制可增强API的安全性和稳定性。安装Flask后,可运行代码测试API功能。
65 6
|
4月前
|
安全 API 网络架构
Python RESTful API设计新篇章,打造高效、易用、安全的Web服务接口,你准备好了吗?
【7月更文挑战第22天】在数字化转型中,RESTful API借助Python的Flask和Django REST Framework,提供高效、易用和安全的接口设计。Flask示例展示了简洁的CRUD操作,Swagger等工具增进API文档的易用性,而HTTPS、JWT和输入验证确保安全性。Python RESTful API设计涉及效率、可用性和安全,是不断进化的Web服务接口的关键。准备好踏上这一新篇章了吗?一起探索,创造卓越!
68 2
|
5月前
|
存储 前端开发 安全
Nuxt3 实战 (十):使用 Supabase 实现 RESTful 风格 API 接口
这篇文章介绍了如何使用Supabase实现RESTful风格的API接口,用于网站分类和子站点的增删改查(CURD)功能。文章首先阐述了表设计,包括ds_categorys和ds_websites两张表的列名、类型和用途,并提到了为每张表添加的user_id和email字段以支持用户身份识别。接着,文章描述了接口设计,以ds_websites表为例,说明了如何通过RESTful API实现CURD功能,并给出了使用SupabaseClient实现插入数据的相关代码。文章最后提供了项目效果预览和总结,指出学习了Nuxt3创建接口及调用Supabase数据库操作。
108 2
Nuxt3 实战 (十):使用 Supabase 实现 RESTful 风格 API 接口
|
5月前
|
XML 安全 API
API攻防-接口安全&SOAP&OpenAPI&RESTful&分类特征导入&项目联动检测
API攻防-接口安全&SOAP&OpenAPI&RESTful&分类特征导入&项目联动检测
|
4月前
|
JSON 数据格式
MysbatisPlus-核心功能-IService开发基础业务接口,MysbatisPlus_Restful风格,新增@RequestBody指定是为了接收Json数据的,使用swagger必须注解
MysbatisPlus-核心功能-IService开发基础业务接口,MysbatisPlus_Restful风格,新增@RequestBody指定是为了接收Json数据的,使用swagger必须注解
|
5月前
|
存储 API
什么是RESTful接口风格
什么是RESTful接口风格
236 0
|
5月前
使用Jetty编写RESTful接口
使用Jetty编写RESTful接口