1. 程式人生 > >Restful 介面傳遞引數

Restful 介面傳遞引數

首先補充一下什麼是 Restful ,這裡簡單說一下,如果一個架構符合REST原則,就稱它為RESTful架構。
RESTful架構特點:
  (1)每一個URI代表一種資源;
  (2)客戶端和伺服器之間,傳遞這種資源的某種表現層;

  (3)客戶端通過四個HTTP動詞,對伺服器端資源進行操作,實現"表現層狀態轉化"。

具體介紹參考:


一:沒有 物件型別 的多引數傳遞


@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

關注公眾號,分享乾貨,討論技術


相關推薦

Restful 介面傳遞引數

首先補充一下什麼是 Restful ,這裡簡單說一下,如果一個架構符合REST原則,就稱它為RESTful架構。RESTful架構特點:  (1)每一個URI代表一種資源;  (2)客戶端和伺服器之間,

mybatis從mapper介面傳遞引數到XML總結

(1)介面傳遞一個變數到xml 介面 selectByPrimaryKey(String id); 對應xml <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType=

JAVA介面傳遞引數(POST),從介面接收資料(JSON)

1,給介面傳遞json格式的資料 package fkJAVA.Array; import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.IOExceptio

spring boot restful介面傳遞或接收date型別資料

前言 我們在開發spring boot restful介面的時候,通常定義請求物件和返回物件,裡面可能會有各種型別的引數,如果需要傳遞或接收date型別的引數,發現呼叫的時候會報引數型別不匹配的錯誤,下面看如何解決 1、@JsonFormat註解 在請求引數定義date型別的

jmeter 傳送加密請求 beanshell斷言 執行緒組間傳遞引數 jmeter bean shell斷言加密的響應資訊(加密介面測試二) jmeter 執行緒組之間的引數傳遞(加密介面測試三)

    原文地址https://www.cnblogs.com/wnfindbug/p/5817038.html 最近在做http加密介面,請求頭的uid引數及body的請求json引數都經過加密再發送請求,加密方式為:ase256。所以,jmeter傳送請求前也需要對uid及jso

介面統一引數格式封裝方法引數傳遞工具類

1...ResultInfo實體承載類 package com.test.domi.common.system; public class ResultInfo<T> { private String code; private String message;

以form表單的形式傳遞引數給rest介面

/** * 以傳統form表單的方式提交引數(並不是以json格式提交) * * @param url 提交的rest url * @param paramMap body引數 * @param r

Java程式碼:呼叫外部介面(使用Json格式傳遞引數)的方法

程式碼如下: String url="所給外部介面的url"; //建立連線物件 HttpClient httpClient = new HttpClient(); //建立請求

JAVA介面作為引數傳遞

可以將介面型別的引數作為方法引數,在實際是使用時可以將實現了介面的類傳遞給方法,後方法或按照重寫的原則執行,實際呼叫的是實現類中的方法程式碼體,這樣便根據傳進入的引數的不同而實現不同的功能。重要的是,當我以後還有另外一個物件並且擁有接受說生命的方法的時候的時候,我們不必須原類

解決Ajax中Restful風格PUT和DELETE請求傳遞引數無效

問題:在Ajax中,採用Restful風格PUT和DELETE請求傳遞引數無效,傳遞到後臺的引數值為null原因:         * Tomcat *       1.將請求體中的資料,封裝成一個map *       2.request.getParameter("id"

springmvc 框架下使用restful介面引數資料傳輸

如前文所說,現在在寫的課程設計老師強制你使用restful介面,說是介面,其實是一種規範。關於restful詳見我之前的那篇講述關於前後端分離的帖子,給出傳送門。不得不說,在開發完一個模組之後,我仍舊

java Http中put請求傳遞引數呼叫介面

HTTP中有很多的請求方式,例如post,get,put和delete,其中get和post用的比較多,而put則相對較少,本文只是自己在使用的時候碰到了需要用到put的方式,做一個積累,也希望對有需要的人提供一個幫助,有不對的地方歡迎各位指正。 /** *

Restful介面傳入多引數的問題和解決方案

結論: restful風格的介面不支援多個引數 注:本文指的是通過json序列化引數的情況 1. 前置 一個定義用來測試的MyParam類 public class MyParam { private String str;

Ajax中Put和Delete請求傳遞引數無效的解決方法(Restful風格

在使用Ajax實現Restful的時候,有時候會出現無法Put、Delete請求引數無法傳遞到程式中的尷尬情況,此時我們可以有兩種解決方案:1、使用地址重寫的方法傳遞引數。2、配置web.xml專案環境。 測試的程式為: @RequestMapping(value =

Ajax中Put和Delete請求傳遞引數無效的解決方法(Restful風格)

開發環境:Tomcat9.0 在使用Ajax實現Restful的時候,有時候會出現無法Put、Delete請求引數無法傳遞到程式中的尷尬情況,此時我們可以有兩種解決方案:1、使用地址重寫的方法傳遞引數。2、配置web.xml專案環境。 測試的程式為:

springMVC介面接受前端傳遞引數資料型別總結

最近專案中處理前臺資料時突然發現比較模糊這些概念,所以總結如下: 目錄 三、總結 一、springMVC中controller引數是自動注入 在springMVC中,controller中方法的引數是自動注入的,在使用註解的方式下,通常有:   

H5頁面向小程式傳遞引數

H5頁面 js; <script src="https://res.wx.qq.com/open/js/jweixin-1.3.2.js"></script> $(function () { //小程式傳送資訊 wx.miniProg

RestTemplate訪問Spring MVC restFul介面

在Spring MVC中,訪問restful介面:  RestTemplate restTemplate=new RestTemplate(); SimpleClientHttpRequestFactory requestFactory = new SimpleCl

Shell程式設計入門一:傳遞引數

我們可以在執行 Shell 指令碼時,向指令碼傳遞引數,指令碼內獲取引數的格式為:$n 。n 代表一個數字,1 為執行指令碼的第一個引數,2 為執行指令碼的第二個引數,以此類推…… 例項 我們向指令碼傳遞三個引數,並分別輸出。其中 $0 表示執行的檔名: #! /bin/ba

Java方法中通過傳遞引數改變變數的值

剛在寫一個用例,需要在方法中改變傳遞的引數的值,可是java中只有傳值呼叫,沒有傳址呼叫。所以在java方法中改變引數的值是行不通的。但是可以改變引用變數的屬性值。 可以仔細理解一下下面幾句話: 1、對於基本型別引數,在方法體內對引數進行重新賦值,並不會改變原有變數的值。 2、對