AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當前位置:首頁 > 科技  > 軟件

不知道這些不要說玩轉了Controller接口

來源: 責編: 時間:2024-05-08 09:18:21 134觀看
導讀環境:SpringBoot3.2.51. 簡介在Spring Boot中,Controller接口是用于處理HTTP請求并返回響應的重要組件。對于Controller中映射的接口,Spring提供了多種匹配方式,以便開發者能夠更靈活、更精確地定義請求與處理器方法之間

環境:SpringBoot3.2.5Xp128資訊網——每日最新資訊28at.com

1. 簡介

在Spring Boot中,Controller接口是用于處理HTTP請求并返回響應的重要組件。對于Controller中映射的接口,Spring提供了多種匹配方式,以便開發者能夠更靈活、更精確地定義請求與處理器方法之間的對應關系。Xp128資訊網——每日最新資訊28at.com

在平時的開發中,定義的接口路徑通常會遵循RESTful API設計原則,并且會盡量保持清晰、簡潔和具有描述性。接口路徑可能會根據業務需求和資源模型進行組織,但一般都具有以下特點:Xp128資訊網——每日最新資訊28at.com

  1. 使用名詞表示資源,如/users、/products。
  2. 使用HTTP方法(GET、POST、PUT、DELETE等)來表示對資源的操作。
  3. 對于資源的子集或特定實例,使用路徑參數,如/users/{userId}。
  4. 在需要時,使用查詢參數來過濾或排序結果,如/users?name=John&sort=asc。

這樣的接口路徑設計有助于保持API的一致性和可讀性,同時也方便前端開發者理解和使用。并且這種RESTful API接口返回值通常都是JSON格式,雖然JSON格式因其輕量級和易讀性而廣泛流行,但實際項目開發中確實可能出現對返回值格式的不同需求。這些需求可能包括返回JSON、XML,或者根據特定的業務場景需要自定義的數據格式。針對這種場景需求SpringMVC為我們提供默認提供了支持,如:JSON,XML,自定義格式,接下來將詳細介紹如何一個接口支持不同的返回數據格式。Xp128資訊網——每日最新資訊28at.com

2. 實戰案例

你需要一個接口支持不同格式的輸出,我們可以通過以下3中方式來定義不同的輸出格式。為了支持XML格式,我們需要引入下面依賴Xp128資訊網——每日最新資訊28at.com

<dependency>  <groupId>com.fasterxml.jackson.dataformat</groupId>  <artifactId>jackson-dataformat-xml</artifactId></dependency>

2.1 請求Header

這種方式是官方推薦的方式,根據請求的Accept header來指定你希望接收的數據格式Xp128資訊網——每日最新資訊28at.com

@RestController@RequestMapping("/returnformat")public class RetrunFormatController {    @GetMapping("")  public User format() {    User user = new User(666L, "張三") ;    return user ;   }}

通過postman指定請求的header AcceptXp128資訊網——每日最新資訊28at.com

圖片圖片Xp128資訊網——每日最新資訊28at.com

指定返回XML格式Xp128資訊網——每日最新資訊28at.com

圖片圖片Xp128資訊網——每日最新資訊28at.com

2.2 通過請求參數

要想SpringMVC支持請求參數方式設置接收的數據格式,首先需要開啟此功能Xp128資訊網——每日最新資訊28at.com

spring:  mvc:    contentnegotiation:      favor-parameter: true

通過上面開啟后我們就可以在請求參數中添加format參數即可,默認只支持json和xml兩種格式:Xp128資訊網——每日最新資訊28at.com

圖片圖片Xp128資訊網——每日最新資訊28at.com

指定返回XML格式Xp128資訊網——每日最新資訊28at.com

圖片圖片Xp128資訊網——每日最新資訊28at.com

請求的參數名默認是format,我們還可以通過如下配置修改參數名Xp128資訊網——每日最新資訊28at.com

spring:  mvc:    contentnegotiation:      favor-parameter: true      parameter-name: fmt

圖片圖片Xp128資訊網——每日最新資訊28at.com

2.3 通過路徑后綴

該種方式已經不推薦使用了。從5.3開始,默認情況下,SpringMVC不再執行.*后綴模式匹配,其中映射到/person的控制器也隱式映射到/perse.*。因此,路徑擴展不再用于解釋響應的請求內容類型?—?例如/person.pdf、/person.xml等。要使用基于后綴的方式,在不同的版本中開啟此功能的方式不一樣,在5.3(包括)之前版本可以直接通過配置設置,從6.0開始只能通過自定義WebMvcConfigurer配置。Xp128資訊網——每日最新資訊28at.com

5.3之前版本Xp128資訊網——每日最新資訊28at.com

spring:  mvc:    contentnegotiation:      favor-path-extension: true

6.0版本Xp128資訊網——每日最新資訊28at.com

@Configurationpublic class FavorPathConfigurer implements WebMvcConfigurer {  @Override  public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {    configurer.favorPathExtension(true) ;  }}

Controller接口定義Xp128資訊網——每日最新資訊28at.com

@RestController@RequestMapping("/favors")public class FavorPathController {    @GetMapping("/p.*")  public User favor() {    return new User(1L, "張三") ;  }}

分別指定不同的請求后綴Xp128資訊網——每日最新資訊28at.com

圖片圖片Xp128資訊網——每日最新資訊28at.com

圖片圖片Xp128資訊網——每日最新資訊28at.com

2.4 自定義格式

在Spring Boot環境下自定義消息格式非常的簡單,你執行實現HttpMessageConverter接口即可。如下示例,自定義返回yaml格式的數據Xp128資訊網——每日最新資訊28at.com

public class YamlHttpMessageConverter implements HttpMessageConverter<Object> {  @Override  public boolean canWrite(Class<?> clazz, MediaType mediaType) {    // 這里為了簡單只做類型判斷,你應該對MediaType做判斷,否則其它格式將無法正確輸出    return User.class.isAssignableFrom(clazz)  }  @Override  public List<MediaType> getSupportedMediaTypes() {    return List.of(new MediaType("application", "yaml")) ;  }  @Override  public void write(Object t, MediaType contentType, HttpOutputMessage outputMessage)      throws IOException, HttpMessageNotWritableException {    StreamUtils.copy(new org.yaml.snakeyaml.Yaml().dump(t), StandardCharsets.UTF_8, outputMessage.getBody()) ;  }}

配置文件中定義你自定義的格式Xp128資訊網——每日最新資訊28at.com

spring:  mvc:    contentnegotiation:      media-types:        yaml: application/yaml

以上就完成了自定義格式輸出的所有準備,測試結果Xp128資訊網——每日最新資訊28at.com

圖片圖片Xp128資訊網——每日最新資訊28at.com

輸出yaml格式數據。你可以將輸出的數據在通過Yaml類進行還原為User對象。Xp128資訊網——每日最新資訊28at.com

本文鏈接:http://www.tebozhan.com/showinfo-26-87255-0.html不知道這些不要說玩轉了Controller接口

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: JavaScript 原生深拷貝方法來啦!structuredClone 閃耀登場~

下一篇: HTMX:重回前端的原始時代?

標簽:
  • 熱門焦點
Top