• Restful 接口传递参数


    首先补充一下什么是 Restful ,这里简单说一下,如果一个架构符合REST原则,就称它为RESTful架构。
    RESTful架构特点:
      (1)每一个URI代表一种资源;
      (2)客户端和服务器之间,传递这种资源的某种表现层;

      (3)客户端通过四个HTTP动词,对服务器端资源进行操作,实现"表现层状态转化"。

    具体介绍参考:

    RESTful API 设计指南

    RESTful架构简介


    一:没有 对象类型 的多参数传递


    @POST
    @Path("/addFavor/")
    void addFavor(@QueryParam("linkId") String linkId, @QueryParam("userId") List<String> userId,
                @QueryParam("favorTypeCode") String favorTypeCode, @QueryParam("linkTable") String linkTable);


    另一种方式可以通过 @PathParam 注解参数,这种方式要在 URL 地址后面声明 如:/{id},多参:/{id}{aaa}{bbb}
    @GET
    @Path("/{id}")
    @ApiMethod(path = "/api/rest/category/{id}", verb = ApiVerb.GET, description = "get category by id", produces = { MediaType.APPLICATION_JSON }, consumes = { MediaType.APPLICATION_JSON })
    @ApiResponseObject
    Category get(@ApiPathParam(name = "id", description = "The Category id") @PathParam("id") String id);


    二:包含 对象类型 的多参传递

    需要在对象前声明 @ApiBodyObject


    @POST
    @Path("/addFavor/")
    void addFavor(@QueryParam("linkId") String linkId, @ApiBodyObject User user,
                @QueryParam("favorTypeCode") String favorTypeCode, @QueryParam("linkTable") String linkTable);

    @ApiBodyObject 相当于 SpringMVC 的 @RequestBody

    参数注解的作用就是将 xml/json (具体那种看配置,cxf 是json) 转换为实体对象如 User 传递给实现方法,如下:

    @Override
    @Transactional(readOnly = false)
    public void addFavor(String linkId, User user, String favorTypeCode, String linkTable) {

    }

    三:多 对象参数 传递

    Restful 仅支持多个参数中,最多只能有一个是对象参数,就比如一个 Form 表单中只能提交一个对象

    解决办法:将多个对象参数封装到一个大对象中,比如新建一个 VO 把这些对象参数都放进去,或者放到Map,List 这些也行


    四:Jersey

    上面的代码基于 Jersey 框架实现,下面来说说 Jersey RESTful 的关系:

    开发 RESTful WebService 意味着支持在多种媒体类型以及抽象底层的客户端-服务器通信细节,如果没有一个好的工具包可用,这将是一个困难的任务
    为了简化使用Java开发 RESTful WebService 及其客户端,一个轻量级的标准被提出:JAX-RS API
    Jersey RESTful WebService框架是一个开源的、产品级别的JAVA框架,支持JAX-RS API并且是一个JAX-RS(JSR 311和 JSR 339)的参考实现
    Jersey不仅仅是一个JAX-RS的参考实现,Jersey提供自己的API,其API继承自JAX-RS,提供更多的特性和功能以进一步简化RESTful service和客户端的开发


    Reference

    http://blog.csdn.net/aitcax/article/details/53097562

    http://www.tuicool.com/articles/32yYvm

    http://liugang594.iteye.com/blog/1496651

    http://blog.csdn.net/bapinggaitianli/article/details/46518705


  • 相关阅读:
    在shell脚本中执行shell脚本
    通过shell脚本批处理es数据
    JOIN a table with a subquery
    学习率 测试
    步长为float
    解决pycharm问题:module 'pip' has no attribute 'main'
    段错误 “段错误(segment fault)”、“非法操作,该内存地址不能read/write” 非法指针解引用造成的错误。
    快速删除指定目录的指定条件的文件
    包依赖管理 项目的分布式迁移
    判断操作系统
  • 原文地址:https://www.cnblogs.com/molashaonian/p/8763351.html
Copyright © 2020-2023  润新知