| |
| <!doctype html> |
| <html lang="en" class="no-js"> |
| <head> |
| |
| <meta charset="utf-8"> |
| <meta name="viewport" content="width=device-width,initial-scale=1"> |
| |
| |
| |
| |
| <link rel="prev" href="basics.html"> |
| |
| |
| <link rel="next" href="jaxrs.html"> |
| |
| |
| <link rel="icon" href="../assets/images/favicon.png"> |
| <meta name="generator" content="mkdocs-1.6.0, mkdocs-material-9.5.19"> |
| |
| |
| |
| <title>HTTP参数映射参考 - Java Chassis 3 开发指南</title> |
| |
| |
| |
| <link rel="stylesheet" href="../assets/stylesheets/main.66ac8b77.min.css"> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> |
| <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback"> |
| <style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style> |
| |
| |
| |
| <script>__md_scope=new URL("..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script> |
| |
| |
| |
| |
| |
| |
| </head> |
| |
| |
| <body dir="ltr"> |
| |
| |
| <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off"> |
| <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off"> |
| <label class="md-overlay" for="__drawer"></label> |
| <div data-md-component="skip"> |
| |
| |
| <a href="#http" class="md-skip"> |
| Skip to content |
| </a> |
| |
| </div> |
| <div data-md-component="announce"> |
| |
| </div> |
| |
| |
| |
| |
| |
| |
| <header class="md-header md-header--shadow" data-md-component="header"> |
| <nav class="md-header__inner md-grid" aria-label="Header"> |
| <a href="../index.html" title="Java Chassis 3 开发指南" class="md-header__button md-logo" aria-label="Java Chassis 3 开发指南" data-md-component="logo"> |
| |
| |
| <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg> |
| |
| </a> |
| <label class="md-header__button md-icon" for="__drawer"> |
| |
| <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg> |
| </label> |
| <div class="md-header__title" data-md-component="header-title"> |
| <div class="md-header__ellipsis"> |
| <div class="md-header__topic"> |
| <span class="md-ellipsis"> |
| Java Chassis 3 开发指南 |
| </span> |
| </div> |
| <div class="md-header__topic" data-md-component="header-topic"> |
| <span class="md-ellipsis"> |
| |
| HTTP参数映射参考 |
| |
| </span> |
| </div> |
| </div> |
| </div> |
| |
| |
| <script>var media,input,key,value,palette=__md_get("__palette");if(palette&&palette.color){"(prefers-color-scheme)"===palette.color.media&&(media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']"),palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent"));for([key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> |
| |
| |
| |
| <label class="md-header__button md-icon" for="__search"> |
| |
| <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> |
| </label> |
| <div class="md-search" data-md-component="search" role="dialog"> |
| <label class="md-search__overlay" for="__search"></label> |
| <div class="md-search__inner" role="search"> |
| <form class="md-search__form" name="search"> |
| <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required> |
| <label class="md-search__icon md-icon" for="__search"> |
| |
| <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> |
| |
| <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg> |
| </label> |
| <nav class="md-search__options" aria-label="Search"> |
| |
| <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1"> |
| |
| <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg> |
| </button> |
| </nav> |
| |
| </form> |
| <div class="md-search__output"> |
| <div class="md-search__scrollwrap" data-md-scrollfix> |
| <div class="md-search-result" data-md-component="search-result"> |
| <div class="md-search-result__meta"> |
| Initializing search |
| </div> |
| <ol class="md-search-result__list" role="presentation"></ol> |
| </div> |
| </div> |
| </div> |
| </div> |
| </div> |
| |
| |
| </nav> |
| |
| </header> |
| |
| <div class="md-container" data-md-component="container"> |
| |
| |
| |
| |
| |
| |
| <main class="md-main" data-md-component="main"> |
| <div class="md-main__inner md-grid"> |
| |
| |
| |
| <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" > |
| <div class="md-sidebar__scrollwrap"> |
| <div class="md-sidebar__inner"> |
| |
| |
| |
| |
| <nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0"> |
| <label class="md-nav__title" for="__drawer"> |
| <a href="../index.html" title="Java Chassis 3 开发指南" class="md-nav__button md-logo" aria-label="Java Chassis 3 开发指南" data-md-component="logo"> |
| |
| |
| <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg> |
| |
| </a> |
| Java Chassis 3 开发指南 |
| </label> |
| |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../index.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| 概述 |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../start/design.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| Java Chassis设计参考 |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../introduce3.x.x.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| Java Chassis 3版本介绍 |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--nested"> |
| |
| |
| |
| <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4" > |
| |
| |
| <label class="md-nav__link" for="__nav_4" id="__nav_4_label" tabindex="0"> |
| |
| |
| <span class="md-ellipsis"> |
| 快速入门 |
| </span> |
| |
| |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_4_label" aria-expanded="false"> |
| <label class="md-nav__title" for="__nav_4"> |
| <span class="md-nav__icon md-icon"></span> |
| 快速入门 |
| </label> |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../start/development-environment.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| 安装本地开发环境 |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../start/first-sample.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| 开发第一个微服务应用 |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../featured-topics/application-bmi.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| BMI应用-使用服务治理 |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../featured-topics/application-porter.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| PORTER应用-典型开发场景 |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="definition/service-definition.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| 微服务定义 |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--nested"> |
| |
| |
| |
| <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_6" > |
| |
| |
| <label class="md-nav__link" for="__nav_6" id="__nav_6_label" tabindex="0"> |
| |
| |
| <span class="md-ellipsis"> |
| Spring Boot集成Java Chassis |
| </span> |
| |
| |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_6_label" aria-expanded="false"> |
| <label class="md-nav__title" for="__nav_6"> |
| <span class="md-nav__icon md-icon"></span> |
| Spring Boot集成Java Chassis |
| </label> |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../spring-boot/introduction.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| Spring Boot集成Java Chassis介绍 |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../spring-boot/diff-spring-mvc.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| 与Spring Web MVC开发习惯的差异 |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--active md-nav__item--nested"> |
| |
| |
| |
| <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_7" checked> |
| |
| |
| <label class="md-nav__link" for="__nav_7" id="__nav_7_label" tabindex="0"> |
| |
| |
| <span class="md-ellipsis"> |
| 开发服务提供者 |
| </span> |
| |
| |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_7_label" aria-expanded="true"> |
| <label class="md-nav__title" for="__nav_7"> |
| <span class="md-nav__icon md-icon"></span> |
| 开发服务提供者 |
| </label> |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="basics.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| 基础概念 |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--active"> |
| |
| <input class="md-nav__toggle md-toggle" type="checkbox" id="__toc"> |
| |
| |
| |
| |
| |
| <label class="md-nav__link md-nav__link--active" for="__toc"> |
| |
| |
| <span class="md-ellipsis"> |
| HTTP参数映射参考 |
| </span> |
| |
| |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| <a href="http-mapping.html" class="md-nav__link md-nav__link--active"> |
| |
| |
| <span class="md-ellipsis"> |
| HTTP参数映射参考 |
| </span> |
| |
| |
| </a> |
| |
| |
| |
| <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> |
| |
| |
| |
| |
| |
| |
| <label class="md-nav__title" for="__toc"> |
| <span class="md-nav__icon md-icon"></span> |
| Table of contents |
| </label> |
| <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> |
| |
| <li class="md-nav__item"> |
| <a href="#http_1" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| HTTP请求参数映射 |
| </span> |
| </a> |
| |
| <nav class="md-nav" aria-label="HTTP请求参数映射"> |
| <ul class="md-nav__list"> |
| |
| <li class="md-nav__item"> |
| <a href="#query" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Query |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#path" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Path |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#header" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Header |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#applicationx-www-form-urlencoded" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| application/x-www-form-urlencoded |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#applicationjson" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| application/json |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#applicationprotobuf" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| application/protobuf |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#applicationtext" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| application/text |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#multipartform-data" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| 文件上传:multipart/form-data |
| </span> |
| </a> |
| |
| </li> |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#http_2" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| HTTP响应参数映射 |
| </span> |
| </a> |
| |
| <nav class="md-nav" aria-label="HTTP响应参数映射"> |
| <ul class="md-nav__list"> |
| |
| <li class="md-nav__item"> |
| <a href="#header_1" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| 状态码 和 Header |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#applicationjson_1" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| application/json |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#applicationprotobuf_1" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| application/protobuf |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#applicationtext_1" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| application/text |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#_1" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| 文件下载 |
| </span> |
| </a> |
| |
| </li> |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| </ul> |
| |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="jaxrs.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| 用JAX-RS开发微服务 |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="springmvc.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| 用SpringMVC开发微服务 |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="transparent-rpc.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| 用透明RPC开发微服务 |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="use-interface.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| 只发布interface的方法为服务接口 |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="reactive.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| 异步处理 |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="context-param.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| 使用 Context 参数 |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="multi-code.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| 多个返回值和错误码 |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="swagger-annotation.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| 使用Swagger注解 |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="interface-constraints.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| 接口定义和数据类型 |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="listen-address-and-publish-address.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| 服务监听地址和发布地址 |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="thread-pool.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| 线程池 |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="event-listener.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| 服务启动事件 |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="parameter-validator.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| 参数效验 |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="bootup.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| 程序启动逻辑 |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="ipv6-configuration.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| IPV6配置和使用 |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="access-log-configuration.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| Access Log配置 |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--nested"> |
| |
| |
| |
| <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8" > |
| |
| |
| <label class="md-nav__link" for="__nav_8" id="__nav_8_label" tabindex="0"> |
| |
| |
| <span class="md-ellipsis"> |
| 开发服务消费者 |
| </span> |
| |
| |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_8_label" aria-expanded="false"> |
| <label class="md-nav__title" for="__nav_8"> |
| <span class="md-nav__icon md-icon"></span> |
| 开发服务消费者 |
| </label> |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../build-consumer/basics.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| 基础概念 |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../build-consumer/using-resttemplate.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| Restful风格 - 使用 RestOperations |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../build-consumer/develop-consumer-using-rpc.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| RPC风格 |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../build-consumer/invoker.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| 泛化调用 |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../build-consumer/3rd-party-service-invoke.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| 调用第三方REST服务 |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--nested"> |
| |
| |
| |
| <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_9" > |
| |
| |
| <label class="md-nav__link" for="__nav_9" id="__nav_9_label" tabindex="0"> |
| |
| |
| <span class="md-ellipsis"> |
| 定制请求处理流程 |
| </span> |
| |
| |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_9_label" aria-expanded="false"> |
| <label class="md-nav__title" for="__nav_9"> |
| <span class="md-nav__icon md-icon"></span> |
| 定制请求处理流程 |
| </label> |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../references-handlers/intruduction.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| 处理链介绍 |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--nested"> |
| |
| |
| |
| <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_10" > |
| |
| |
| <label class="md-nav__link" for="__nav_10" id="__nav_10_label" tabindex="0"> |
| |
| |
| <span class="md-ellipsis"> |
| 通用功能开发 |
| </span> |
| |
| |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_10_label" aria-expanded="false"> |
| <label class="md-nav__title" for="__nav_10"> |
| <span class="md-nav__icon md-icon"></span> |
| 通用功能开发 |
| </label> |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../general-development/metrics.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| 应用性能监控 |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../general-development/microservice-invocation-chain.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| 微服务调用链 |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../general-development/customized-tracing.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| 自定义调用链打点 |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../general-development/local-develop-test.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| 本地开发和测试 |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../general-development/upload-download.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| 文件上传下载 |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../general-development/reactive.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| Reactive |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../general-development/dnsconfig.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| DNS自定义配置 |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../general-development/proxy.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| 代理设置 |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../general-development/report-framework-version.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| 框架上报版本号 |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../general-development/cross-app-invocation.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| 跨应用调用 |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../general-development/secret-field.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| 定制序列化和反序列化方法 |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../general-development/context.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| 使用Context传递控制消息 |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../general-development/produceprocess.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| 返回值序列化扩展 |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../general-development/CORS.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| 跨域资源共享(CORS) |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../general-development/AlarmEvent.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| 获取熔断与实例隔离告警事件信息 |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../general-development/shutdown.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| 优雅停机 |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../general-development/error-handling.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| 异常处理 |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../general-development/multienvironment.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| 微服务实例间多环境隔离 |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../general-development/thread-model.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| 线程模型 |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../general-development/config-logs.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| 配置日志 |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--nested"> |
| |
| |
| |
| <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_11" > |
| |
| |
| <label class="md-nav__link" for="__nav_11" id="__nav_11_label" tabindex="0"> |
| |
| |
| <span class="md-ellipsis"> |
| 多样化的通信协议功能 |
| </span> |
| |
| |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_11_label" aria-expanded="false"> |
| <label class="md-nav__title" for="__nav_11"> |
| <span class="md-nav__icon md-icon"></span> |
| 多样化的通信协议功能 |
| </label> |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../transports/introduction.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| 多协议介绍 |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../transports/rest-over-vertx.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| REST over HTTP(Vert.x) |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../transports/http2.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| REST over HTTP2(Vert.x) |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../transports/rest-over-servlet-embedded.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| REST over Servlet(Spring Boot Embedded) |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../transports/rest-over-servlet.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| REST over Servlet(WAR) |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../transports/highway-rpc.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| Highway |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--nested"> |
| |
| |
| |
| <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_12" > |
| |
| |
| <label class="md-nav__link" for="__nav_12" id="__nav_12_label" tabindex="0"> |
| |
| |
| <span class="md-ellipsis"> |
| 多样化的服务注册与发现功能 |
| </span> |
| |
| |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_12_label" aria-expanded="false"> |
| <label class="md-nav__title" for="__nav_12"> |
| <span class="md-nav__icon md-icon"></span> |
| 多样化的服务注册与发现功能 |
| </label> |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../registry/introduction.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| 注册发现介绍 |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../registry/service-center.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| 使用Service Center |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../registry/nacos.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| 使用Nacos |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../registry/zookeeper.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| 使用ZooKeeper |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../registry/local-registry.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| 本地注册发现 |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../registry/distributed.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| 去中心化注册发现 |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--nested"> |
| |
| |
| |
| <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_13" > |
| |
| |
| <label class="md-nav__link" for="__nav_13" id="__nav_13_label" tabindex="0"> |
| |
| |
| <span class="md-ellipsis"> |
| 多样化的配置管理功能 |
| </span> |
| |
| |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_13_label" aria-expanded="false"> |
| <label class="md-nav__title" for="__nav_13"> |
| <span class="md-nav__icon md-icon"></span> |
| 多样化的配置管理功能 |
| </label> |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../config/general-config.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| 服务配置介绍 |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../config/read-config.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| 在程序中读取配置信息 |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../config/kie.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| 使用Kie |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../config/nacos.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| 使用Nacos |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../config/zookeeper.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| 使用Zookeeper |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../config/apollo.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| 使用Apollo |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../config/cse1.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| 使用CSE1.0配置中心 |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--nested"> |
| |
| |
| |
| <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_14" > |
| |
| |
| <label class="md-nav__link" for="__nav_14" id="__nav_14_label" tabindex="0"> |
| |
| |
| <span class="md-ellipsis"> |
| 服务治理功能参考 |
| </span> |
| |
| |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_14_label" aria-expanded="false"> |
| <label class="md-nav__title" for="__nav_14"> |
| <span class="md-nav__icon md-icon"></span> |
| 服务治理功能参考 |
| </label> |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../references-handlers/rule-governance.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| 流量特征治理 |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../references-handlers/governance-best-practise.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| 流量特征治理最佳实践 |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../references-handlers/loadbalance.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| 负载均衡 |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../references-handlers/ratelimit.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| 限流 |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../references-handlers/router.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| 灰度发布 |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../references-handlers/fault-injection.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| 故障注入 |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../references-handlers/fail-retry.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| 快速失败和重试 |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--nested"> |
| |
| |
| |
| <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_15" > |
| |
| |
| <label class="md-nav__link" for="__nav_15" id="__nav_15_label" tabindex="0"> |
| |
| |
| <span class="md-ellipsis"> |
| 网关功能参考 |
| </span> |
| |
| |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_15_label" aria-expanded="false"> |
| <label class="md-nav__title" for="__nav_15"> |
| <span class="md-nav__icon md-icon"></span> |
| 网关功能参考 |
| </label> |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../edge/open-service.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| 介绍 |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../edge/by-servicecomb-sdk.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| 使用 Edge Service 做网关 |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../edge/zuul.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| 使用 `zuul` 和 `spring cloud gateway` 做网关 |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../edge/nginx.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| nginx 网关简单介绍 |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--nested"> |
| |
| |
| |
| <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_16" > |
| |
| |
| <label class="md-nav__link" for="__nav_16" id="__nav_16_label" tabindex="0"> |
| |
| |
| <span class="md-ellipsis"> |
| 安全特性参考 |
| </span> |
| |
| |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_16_label" aria-expanded="false"> |
| <label class="md-nav__title" for="__nav_16"> |
| <span class="md-nav__icon md-icon"></span> |
| 安全特性参考 |
| </label> |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../references-handlers/publickey.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| 公钥认证 |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../security/tls.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| 使用TLS通信 |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../security/shi-yong-rsa-ren-zheng.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| 使用RSA认证 |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--nested"> |
| |
| |
| |
| <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_17" > |
| |
| |
| <label class="md-nav__link" for="__nav_17" id="__nav_17_label" tabindex="0"> |
| |
| |
| <span class="md-ellipsis"> |
| 专题文章 |
| </span> |
| |
| |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_17_label" aria-expanded="false"> |
| <label class="md-nav__title" for="__nav_17"> |
| <span class="md-nav__icon md-icon"></span> |
| 专题文章 |
| </label> |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../featured-topics/features.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| 特性介绍 |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../featured-topics/secrets.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| 技术解密 |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../featured-topics/upgrading.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| 升级指导 |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../featured-topics/compatibility.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| 兼容问题和兼容性策略 |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../featured-topics/performance.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| 性能问题分析和调优 |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--nested"> |
| |
| |
| |
| <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_18" > |
| |
| |
| <label class="md-nav__link" for="__nav_18" id="__nav_18_label" tabindex="0"> |
| |
| |
| <span class="md-ellipsis"> |
| 常用配置项参考 |
| </span> |
| |
| |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_18_label" aria-expanded="false"> |
| <label class="md-nav__title" for="__nav_18"> |
| <span class="md-nav__icon md-icon"></span> |
| 常用配置项参考 |
| </label> |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../config-reference/rest-transport-client.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| REST Transport Client 配置项 |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item md-nav__item--nested"> |
| |
| |
| |
| <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_19" > |
| |
| |
| <label class="md-nav__link" for="__nav_19" id="__nav_19_label" tabindex="0"> |
| |
| |
| <span class="md-ellipsis"> |
| 常见问题 |
| </span> |
| |
| |
| <span class="md-nav__icon md-icon"></span> |
| </label> |
| |
| <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_19_label" aria-expanded="false"> |
| <label class="md-nav__title" for="__nav_19"> |
| <span class="md-nav__icon md-icon"></span> |
| 常见问题 |
| </label> |
| <ul class="md-nav__list" data-md-scrollfix> |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../question-and-answer/faq.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| FAQ |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../question-and-answer/question_answer.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| Q & A |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="md-nav__item"> |
| <a href="../question-and-answer/interface-compatibility.html" class="md-nav__link"> |
| |
| |
| <span class="md-ellipsis"> |
| 微服务接口兼容常见问题 |
| </span> |
| |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| |
| |
| </ul> |
| </nav> |
| </div> |
| </div> |
| </div> |
| |
| |
| |
| <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" > |
| <div class="md-sidebar__scrollwrap"> |
| <div class="md-sidebar__inner"> |
| |
| |
| <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> |
| |
| |
| |
| |
| |
| |
| <label class="md-nav__title" for="__toc"> |
| <span class="md-nav__icon md-icon"></span> |
| Table of contents |
| </label> |
| <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> |
| |
| <li class="md-nav__item"> |
| <a href="#http_1" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| HTTP请求参数映射 |
| </span> |
| </a> |
| |
| <nav class="md-nav" aria-label="HTTP请求参数映射"> |
| <ul class="md-nav__list"> |
| |
| <li class="md-nav__item"> |
| <a href="#query" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Query |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#path" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Path |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#header" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| Header |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#applicationx-www-form-urlencoded" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| application/x-www-form-urlencoded |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#applicationjson" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| application/json |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#applicationprotobuf" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| application/protobuf |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#applicationtext" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| application/text |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#multipartform-data" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| 文件上传:multipart/form-data |
| </span> |
| </a> |
| |
| </li> |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#http_2" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| HTTP响应参数映射 |
| </span> |
| </a> |
| |
| <nav class="md-nav" aria-label="HTTP响应参数映射"> |
| <ul class="md-nav__list"> |
| |
| <li class="md-nav__item"> |
| <a href="#header_1" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| 状态码 和 Header |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#applicationjson_1" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| application/json |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#applicationprotobuf_1" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| application/protobuf |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#applicationtext_1" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| application/text |
| </span> |
| </a> |
| |
| </li> |
| |
| <li class="md-nav__item"> |
| <a href="#_1" class="md-nav__link"> |
| <span class="md-ellipsis"> |
| 文件下载 |
| </span> |
| </a> |
| |
| </li> |
| |
| </ul> |
| </nav> |
| |
| </li> |
| |
| </ul> |
| |
| </nav> |
| </div> |
| </div> |
| </div> |
| |
| |
| |
| <div class="md-content" data-md-component="content"> |
| <article class="md-content__inner md-typeset"> |
| |
| |
| |
| |
| <h1 id="http">HTTP参数映射参考</h1> |
| <p>HTTP协议是一个文本传输协议,RESTFul框架核心部分,就是将语言对象与HTTP协议的组成部件映射起来,提供远程过程调用(RPC)能力。 HTTP的请求响应可以简化描述为:</p> |
| <ul> |
| <li>请求</li> |
| </ul> |
| <pre><code class="language-text">GET /apps HTTP/1.1 |
| |
| Host: 127.0.0.1:8080 |
| Accept-Language: zh |
| Content-Type: application/x-www-form-urlencoded |
| |
| queryParamExample1=example1&queryParamExample2=example2 |
| </code></pre> |
| <ul> |
| <li>响应</li> |
| </ul> |
| <pre><code class="language-text">Host: 127.0.0.1:8080 |
| Content-Type: application/x-www-form-urlencoded |
| |
| queryParamExample1=example1&queryParamExample2=example2 |
| </code></pre> |
| <h2 id="http_1">HTTP请求参数映射</h2> |
| <h3 id="query">Query</h3> |
| <p>Query参数属于HTTP协议URL的一部分,比如:</p> |
| <pre><code class="language-text">GET /apps?queryParamExample1=example1&queryParamExample2=example2 HTTP/1.1 |
| Host: 127.0.0.1:8080 |
| Accept-Language: zh |
| </code></pre> |
| <p>定义了Query参数 <code>queryParamExample1</code> 和 <code>queryParamExample2</code>。</p> |
| <ul> |
| <li>Spring MVC</li> |
| </ul> |
| <pre><code class="language-java">@GetMapping("") |
| public String queryExample(@RequestParam("queryParamExample1") String example1, |
| @RequestParam("queryParamExample2") String example2) |
| </code></pre> |
| <ul> |
| <li>JAX-RS</li> |
| </ul> |
| <pre><code class="language-java">@GET |
| @Path("") |
| public String queryJAXRSExample(@QueryParam("queryParamExample1") String example1, |
| @QueryParam("queryParamExample2") String example2) |
| </code></pre> |
| <h3 id="path">Path</h3> |
| <p>Path参数属于HTTP协议URL的一部分,比如:</p> |
| <pre><code class="language-text">GET /apps/pathParamExample1/pathParamExample2 HTTP/1.1 |
| Host: 127.0.0.1:8080 |
| Accept-Language: zh |
| </code></pre> |
| <p>定义了Path参数 <code>pathParamExample1</code> 和 <code>pathParamExample2</code>。</p> |
| <ul> |
| <li>Spring MVC</li> |
| </ul> |
| <pre><code class="language-java">@GetMapping("/{pathParamExample1}/{pathParamExample2}") |
| public String pathSpringMVCExample(@PathVariable("pathParamExample1") String example1, |
| @PathVariable("pathParamExample2") String example2) |
| </code></pre> |
| <ul> |
| <li>JAX-RS</li> |
| </ul> |
| <pre><code class="language-java">@GET |
| @Path("/{pathParamExample1}/{pathParamExample2}") |
| public String pathJAXRSExample(@PathParam("pathParamExample1") String example1, |
| @PathParam("pathParamExample2") String example2) |
| </code></pre> |
| <h3 id="header">Header</h3> |
| <p>Header对应于HTTP协议请求头,比如:</p> |
| <pre><code class="language-text">GET /apps HTTP/1.1 |
| Host: 127.0.0.1:8080 |
| Accept-Language: zh |
| headerParamExample1: example1 |
| headerParamExample2: example2 |
| </code></pre> |
| <p>定义了Header参数 <code>headerParamExample1</code> 和 <code>headerParamExample2</code>。</p> |
| <ul> |
| <li>Spring MVC</li> |
| </ul> |
| <pre><code class="language-java">@GetMapping("") |
| public String headerSpringMVCExample(@RequestHeader("headerParamExample1") String example1, |
| @RequestHeader("headerParamExample2") String example2) |
| </code></pre> |
| <ul> |
| <li>JAX-RS</li> |
| </ul> |
| <pre><code class="language-java">@GET |
| @Path("") |
| public String headerJAXRSExample(@HeaderParam("headerParamExample1") String example1, |
| @HeaderParam("headerParamExample2") String example2) |
| </code></pre> |
| <h3 id="applicationx-www-form-urlencoded">application/x-www-form-urlencoded</h3> |
| <p>当 HTTP 消息体是 <code>application/x-www-form-urlencoded</code>, 可以使用 Form 参数。 </p> |
| <pre><code class="language-text">GET /apps HTTP/1.1 |
| Host: 127.0.0.1:8080 |
| Accept-Language: zh |
| Content-Type: application/x-www-form-urlencoded |
| |
| queryParamExample1=example1&queryParamExample2=example2 |
| </code></pre> |
| <ul> |
| <li>Spring MVC</li> |
| </ul> |
| <pre><code class="language-java">@GetMapping(path = "formSpringMVCExample", consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE) |
| public String formSpringMVCExample(@RequestAttribute("formParamExample1") String example1, |
| @RequestAttribute("formParamExample2") String example2) |
| </code></pre> |
| <blockquote> |
| <blockquote> |
| <blockquote> |
| <p>原生 Spring MVC 的 RequestAttribute 表示 HTTP 的 Attribute, 使用 RequestParam 表示 form 参数,这会导致代码生成契约的时候产生歧义。 Java Chassis 3 推荐使用 RequestAttribute 表示Form参数。</p> |
| </blockquote> |
| </blockquote> |
| </blockquote> |
| <ul> |
| <li>JAX-RS</li> |
| </ul> |
| <pre><code class="language-java">@GET |
| @Path("formJAXRSExample") |
| @Consumes(MediaType.APPLICATION_FORM_URLENCODED) |
| public String formJAXRSExample(@FormParam("formParamExample1") String example1, |
| @FormParam("formParamExample2") String example2) |
| </code></pre> |
| <h3 id="applicationjson">application/json</h3> |
| <p>当 HTTP 消息体是 <code>application/json</code>, 使用json进行对象序列化。</p> |
| <pre><code class="language-text">GET /apps HTTP/1.1 |
| Host: 127.0.0.1:8080 |
| Accept-Language: zh |
| Content-Type: application/json |
| |
| {"name": "wang", "age": 20} |
| </code></pre> |
| <ul> |
| <li>Spring MVC</li> |
| </ul> |
| <pre><code class="language-java">@PostMapping(path = "jsonSpringMVCExample", consumes = MediaType.APPLICATION_JSON_VALUE) |
| public String jsonSpringMVCExample(@RequestBody Person person) |
| </code></pre> |
| <ul> |
| <li>JAX-RS</li> |
| </ul> |
| <pre><code class="language-java">@POST |
| @Path("jsonJAXRSExample") |
| @Consumes(jakarta.ws.rs.core.MediaType.APPLICATION_JSON) |
| public String jsonJAXRSExample(Person person) |
| </code></pre> |
| <blockquote> |
| <blockquote> |
| <blockquote> |
| <p>JAX-RS没有声明标签的时候表示Body参数。 </p> |
| </blockquote> |
| </blockquote> |
| </blockquote> |
| <h3 id="applicationprotobuf">application/protobuf</h3> |
| <p>当 HTTP 消息体是 <code>application/protobuf</code>, 使用protobuf进行对象序列化。</p> |
| <pre><code class="language-text">GET /apps HTTP/1.1 |
| Host: 127.0.0.1:8080 |
| Accept-Language: zh |
| Content-Type: application/protobuf |
| |
| proto-buffer-binary-data |
| </code></pre> |
| <ul> |
| <li>Spring MVC</li> |
| </ul> |
| <pre><code class="language-java">@PostMapping(path = "protobufSpringMVCExample", consumes = SwaggerConst.PROTOBUF_TYPE) |
| public String protobufSpringMVCExample(@RequestBody Person person) |
| </code></pre> |
| <ul> |
| <li>JAX-RS</li> |
| </ul> |
| <pre><code class="language-java">@POST |
| @Path("protobufJAXRSExample") |
| @Consumes(SwaggerConst.PROTOBUF_TYPE) |
| public String protobufJAXRSExample(Person person) |
| </code></pre> |
| <blockquote> |
| <blockquote> |
| <blockquote> |
| <p>JAX-RS没有声明标签的时候表示Body参数。</p> |
| </blockquote> |
| </blockquote> |
| </blockquote> |
| <h3 id="applicationtext">application/text</h3> |
| <p>当 HTTP 消息体是 <code>application/text</code>, 使用json进行对象序列化。</p> |
| <blockquote> |
| <blockquote> |
| <blockquote> |
| <p>application/text 和 application/json 在对象序列化上都采用 json,对于大多数场景两者是等价的。只有当对象类型为 String 的时候, 存在差异:application/text 的 String 序列化后的文本没有双引号;application/json 的 String 序列化后的文本有双引号;</p> |
| </blockquote> |
| </blockquote> |
| </blockquote> |
| <pre><code class="language-text">GET /apps HTTP/1.1 |
| Host: 127.0.0.1:8080 |
| Accept-Language: zh |
| Content-Type: application/text |
| |
| {"name": "wang", "age": 20} |
| </code></pre> |
| <ul> |
| <li>Spring MVC</li> |
| </ul> |
| <pre><code class="language-java">@PostMapping(path = "textSpringMVCExample", consumes = MediaType.TEXT_PLAIN_VALUE) |
| public String textSpringMVCExample(@RequestBody Person person) |
| </code></pre> |
| <ul> |
| <li>JAX-RS</li> |
| </ul> |
| <pre><code class="language-java">@POST |
| @Path("textJAXRSExample") |
| @Consumes(MediaType.TEXT_PLAIN) |
| public String textJAXRSExample(Person person) |
| </code></pre> |
| <blockquote> |
| <blockquote> |
| <blockquote> |
| <p>JAX-RS没有声明标签的时候表示Body参数。</p> |
| </blockquote> |
| </blockquote> |
| </blockquote> |
| <h3 id="multipartform-data">文件上传:multipart/form-data</h3> |
| <p>当 HTTP 消息体是 <code>multipart/form-data</code>, 表示文件上传。</p> |
| <pre><code class="language-text">GET /apps HTTP/1.1 |
| Host: 127.0.0.1:8080 |
| Accept-Language: zh |
| Content-Type: multipart/form-data; boundary=----boundary-example---- |
| |
| ----boundary-example---- |
| Content-Disposition: form-data; name="multiPartParamExample1" |
| |
| contents of multiPartParamExample1 |
| ----boundary-example---- |
| Content-Disposition: form-data; name="multiPartParamExample2" |
| |
| contents of multiPartParamExample2 |
| ----boundary-example---- |
| </code></pre> |
| <blockquote> |
| <blockquote> |
| <blockquote> |
| <p>multipart/form-data 也可以表示 Form 参数, 和 application/x-www-form-urlencoded 用法一样。为了避免混淆和简洁,建议multipart/form-data专用于文件上传场景。</p> |
| </blockquote> |
| </blockquote> |
| </blockquote> |
| <ul> |
| <li>Spring MVC</li> |
| </ul> |
| <pre><code class="language-java">@PostMapping(path = "multiPartSpringMVCExample", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) |
| public String multiPartSpringMVCExample(@RequestPart("multiPartParamExample1") MultipartFile example1, |
| @RequestPart("multiPartParamExample2") MultipartFile example2) |
| </code></pre> |
| <ul> |
| <li>JAX-RS</li> |
| </ul> |
| <pre><code class="language-java">@POST |
| @Path("multiPartJAXRSExample") |
| @Consumes(MediaType.MULTIPART_FORM_DATA) |
| public String multiPartJAXRSExample(@FormParam("multiPartParamExample1") Part example1, |
| @FormParam("multiPartParamExample2") Part example2) |
| </code></pre> |
| <h2 id="http_2">HTTP响应参数映射</h2> |
| <h3 id="header_1">状态码 和 Header</h3> |
| <p>在没有特殊声明的情况下,正常响应的状态码是 <code>200</code>,也可以声明其他状态码。</p> |
| <blockquote> |
| <blockquote> |
| <blockquote> |
| <p>Java Chassis 2xx 状态码表示正常响应,会进行对象序列化。 可以使用 <code>@ApiResponse</code> 自定义状态码,所有 2xx 状态码声明的对象类型必须一样。 其他状态码表示异常,会对 <code>InvocationException</code> 进行序列化,不要求对象类型一样。 </p> |
| </blockquote> |
| </blockquote> |
| </blockquote> |
| <ul> |
| <li>Spring MVC</li> |
| </ul> |
| <pre><code class="language-java">@PostMapping(path = "statusHeaderSpringMVCExample") |
| @ApiResponses(value = { |
| @ApiResponse( |
| responseCode = "200", |
| content = @Content(schema = @Schema(implementation = Person.class)), |
| headers = { |
| @Header(name = "h1", schema = @Schema(implementation = String.class)), |
| @Header(name = "h2", schema = @Schema(implementation = String.class))}), |
| @ApiResponse( |
| responseCode = "202", |
| content = @Content(schema = @Schema(implementation = Person.class)), |
| headers = { |
| @Header(name = "h1", schema = @Schema(implementation = String.class)), |
| @Header(name = "h2", schema = @Schema(implementation = String.class))}), |
| @ApiResponse( |
| responseCode = "400", |
| content = @Content(schema = @Schema(implementation = MultiResponse400.class)), |
| headers = { |
| @Header(name = "h1", schema = @Schema(implementation = String.class)), |
| @Header(name = "h2", schema = @Schema(implementation = String.class))})}) |
| public ResponseEntity<Person> statusHeaderSpringMVCExample(@RequestBody Person person) { |
| return ResponseEntity.status(200).header("h1", "h1") |
| .header("h2", "h2").body(person); |
| } |
| </code></pre> |
| <ul> |
| <li>JAX-RS</li> |
| </ul> |
| <pre><code class="language-java">@PostMapping(path = "statusHeaderJAXRSExample") |
| @ApiResponses(value = { |
| @ApiResponse( |
| responseCode = "200", |
| content = @Content(schema = @Schema(implementation = Person.class)), |
| headers = { |
| @Header(name = "h1", schema = @Schema(implementation = String.class)), |
| @Header(name = "h2", schema = @Schema(implementation = String.class))}), |
| @ApiResponse( |
| responseCode = "202", |
| content = @Content(schema = @Schema(implementation = Person.class)), |
| headers = { |
| @Header(name = "h1", schema = @Schema(implementation = String.class)), |
| @Header(name = "h2", schema = @Schema(implementation = String.class))}), |
| @ApiResponse( |
| responseCode = "400", |
| content = @Content(schema = @Schema(implementation = MultiResponse400.class)), |
| headers = { |
| @Header(name = "h1", schema = @Schema(implementation = String.class)), |
| @Header(name = "h2", schema = @Schema(implementation = String.class))})}) |
| public Response statusHeaderJAXRSExample(@RequestBody Person person) { |
| return Response.status(200).entity(new Person()).header("h1", "h1") |
| .header("h2", "h2").build(); |
| } |
| </code></pre> |
| <h3 id="applicationjson_1">application/json</h3> |
| <p>响应类型根据 <code>Accept</code> 来确定,默认是 application/json。 也可以声明接口只支持 application/json 响应。 </p> |
| <ul> |
| <li>Spring MVC</li> |
| </ul> |
| <pre><code class="language-java">@PostMapping(path = "produceJsonSpringMVCExample", produces = MediaType.APPLICATION_JSON_VALUE) |
| public Person produceJsonSpringMVCExample() |
| </code></pre> |
| <ul> |
| <li>JAX-RS</li> |
| </ul> |
| <pre><code class="language-java">@POST |
| @Path("produceJsonJAXRSExample") |
| @Produces(MediaType.APPLICATION_JSON) |
| public Person produceJsonJAXRSExample() |
| </code></pre> |
| <h3 id="applicationprotobuf_1">application/protobuf</h3> |
| <p>响应类型根据 <code>Accept</code> 来确定,默认是 application/json。 也可以声明接口只支持 application/protobuf 响应。</p> |
| <ul> |
| <li>Spring MVC</li> |
| </ul> |
| <pre><code class="language-java">@PostMapping(path = "produceProtobufSpringMVCExample", produces = SwaggerConst.PROTOBUF_TYPE) |
| public Person produceProtobufSpringMVCExample() |
| </code></pre> |
| <ul> |
| <li>JAX-RS</li> |
| </ul> |
| <pre><code class="language-java">@POST |
| @Path("produceProtobufJAXRSExample") |
| @Produces(SwaggerConst.PROTOBUF_TYPE) |
| public Person produceProtobufJAXRSExample() |
| </code></pre> |
| <h3 id="applicationtext_1">application/text</h3> |
| <p>响应类型根据 <code>Accept</code> 来确定,默认是 application/json。 也可以声明接口只支持 application/text 响应。</p> |
| <ul> |
| <li>Spring MVC</li> |
| </ul> |
| <pre><code class="language-java">@PostMapping(path = "produceTextSpringMVCExample", produces = MediaType.TEXT_PLAIN_VALUE) |
| public Person produceTextSpringMVCExample() |
| </code></pre> |
| <ul> |
| <li>JAX-RS</li> |
| </ul> |
| <pre><code class="language-java">@POST |
| @Path("produceTextJAXRSExample") |
| @Produces(MediaType.TEXT_PLAIN) |
| public Person produceTextJAXRSExample() |
| </code></pre> |
| <h3 id="_1">文件下载</h3> |
| <p>Java Chassis提供了通用的 <code>文件下载</code> 支持。 如果返回值类型为 <code>File</code>、<code>Resource</code>、<code>InputStream</code>、<code>Part</code> 等,则被认为是 <code>文件下载</code>。 文件MIME类型和文件名可以使用 <code>Part</code> 的 API 指定。</p> |
| <ul> |
| <li>Spring MVC</li> |
| </ul> |
| <pre><code class="language-java">@GetMapping(path = "/downloadSpringMVCExample") |
| public Part downloadSpringMVCExample(String content) throws IOException { |
| File file = createTempFile(content); |
| return new FilePart(null, file) |
| .setDeleteAfterFinished(true) |
| .setSubmittedFileName("test.bin") |
| .contentType("application/octet-stream"); |
| } |
| </code></pre> |
| <p>上述接口会返回如下响应头:</p> |
| <pre><code class="language-text">Content-Disposition: attachment;filename=test.bin;filename*=utf-8’’test.bin |
| Content-Encoding: gzip |
| Content-Type: application/octet-stream |
| Transfer-Encoding: chunked |
| </code></pre> |
| <ul> |
| <li>JAX-RS</li> |
| </ul> |
| <pre><code class="language-java">@GET |
| @Path("/downloadSpringMVCExample") |
| public Part downloadSpringMVCExample(String content) throws IOException { |
| File file = createTempFile(content); |
| return new FilePart(null, file) |
| .setDeleteAfterFinished(true) |
| .setSubmittedFileName("test.bin") |
| .contentType("application/octet-stream"); |
| } |
| </code></pre> |
| <p>上述接口会返回如下响应头:</p> |
| <pre><code class="language-text">Content-Disposition: attachment;filename=test.bin;filename*=utf-8’’test.bin |
| Content-Encoding: gzip |
| Content-Type: application/octet-stream |
| Transfer-Encoding: chunked |
| </code></pre> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| </article> |
| </div> |
| |
| |
| <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> |
| </div> |
| |
| </main> |
| |
| <footer class="md-footer"> |
| |
| <div class="md-footer-meta md-typeset"> |
| <div class="md-footer-meta__inner md-grid"> |
| <div class="md-copyright"> |
| |
| |
| Made with |
| <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener"> |
| Material for MkDocs |
| </a> |
| |
| </div> |
| |
| </div> |
| </div> |
| </footer> |
| |
| </div> |
| <div class="md-dialog" data-md-component="dialog"> |
| <div class="md-dialog__inner md-typeset"></div> |
| </div> |
| |
| |
| <script id="__config" type="application/json">{"base": "..", "features": [], "search": "../assets/javascripts/workers/search.b8dbb3d2.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script> |
| |
| |
| <script src="../assets/javascripts/bundle.dd8806f2.min.js"></script> |
| |
| |
| </body> |
| </html> |