【OpenApi Generator】入门和调试

编程入门 行业动态 更新时间:2024-10-27 08:31:45

【OpenApi Generator】<a href=https://www.elefans.com/category/jswz/34/1770026.html style=入门和调试"/>

【OpenApi Generator】入门和调试

OpenApi Generator是什么

OpenAPI Generator 是一个完全免费开源 (Apache 许可 v2) 的项目,用来生成 REST1 API 客

户端、服务器存根和基于 OpenAPI (以前称为 Swagger ) 规范的文档。如果您不熟悉

OpenAPI 规范,那么它就是描述 RESTful API 方面最流行的标准,并得到 Adobe,Atlassian

,CA Technologies,eBay,IBM,Google,Microsoft,PayPal、Salesforce,SAP,

SmartBear 等众多知名公司的支持2。有关 OpenAPI 2.0 的完整规范,请参阅 Github 中的项目页面:
介绍:
/docs/generators/java/

我的理解

如果需要公开部分接口给到外部使用,那么就可以按照相关约定,直接使用swagger去生成对应的请求代码。
而对接这种有openApi方式的技术,还是很友好的。
有的公司会选择把请求代码写好,不过类似的请求代码复用是个问题,还有的使用webservice老技术。
目前我对接过的技术来说,还是openApi友好。
不过,学习成本还是挺大的,百度和谷歌通篇都在教你怎么写配置,我需要它?
需要。
但我更需要怎么openApi generator生成代码,直接请求调用。

我至少花费了一两周时间在这上面,噢!!!
生成出来的代码不是缺少ApiClient,就是缺少配置url,有的甚至只是测试代码,怎么调用都是返回Not implemented。靠!

这样的话,我还怎么玩。

折磨我好久的openApi弄出来了,我必须写下心得。

入门

我选择的是直接从pom.xml配置,当然可以下载jar来生成,但是那个的门槛也比较高。
还是maven配置简单易上手。

上手

抬手把maven配置写好,里面的配置代表什么意思,不要管,copy就能用,要什么自行车。
开个玩笑,还是要关注几个点。

inputSpec标签

对应openApi generate的swagger配置存放地址,什么这个是什么?你看下图,类似这种格式就是:

从哪里来的,那当然是从某个官网上下载的。

generatorName标签

这个嘛,就是你要生成的技术,在官网有来源,那个地方?不知道,百度的,只有这个地方有标识。凑合着用吧。

当然,你也可以在Github上看分类,怎么看?
看代码包列表

library标签

也可以从Github上看代码列表分类,也可以从官网上看,就是上上图点开的地方,右边粗体就是可选的技术。

apiPackage标签和modelPackage标签

就是API代码生成地方,和model存放的位置

<build><plugins><plugin>groupId>org.openapitools</groupId><artifactId>openapi-generator-maven-plugin</artifactId><version>6.2.1</version><executions><execution><id>abc-api</id><goals><goal>generate</goal></goals><configuration><skipValidateSpec>true</skipValidateSpec><inputSpec>${project.basedir}/src/main/resources/memsource-api.yml</inputSpec><generatorName>java</generatorName><library>webclient</library><apiPackage>com.eci.xxx.xxx.rest</apiPackage><modelPackage>com.eci.xxx.xxx.pojo</modelPackage><supportingFilesToGenerate>ApiUtil.java</supportingFilesToGenerate><configOptions><delegatePattern>true</delegatePattern><title>swagger</title><serializableModel>true</serializableModel><dateLibrary>legacy</dateLibrary></configOptions></configuration></execution></executions></plugin></plugins>
</build>

开干

我选用的是webclient,当然你们不嫌麻烦,可以自己试试。
引入相关依赖

 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-webflux</artifactId><version>3.1.0</version>
</dependency>

接着,刷新maven。
这两个命令用一下,命令记不住靠idea来凑。

生成完后,就会在target里面有了。

重点

当你生成出来的代码,找不到ApiClient类时,卧槽,心一定很慌,怎么我搞出来的代码,全是报错。

相信我,我已经经历过了。

然后,我就开始百度大法,擦,无效!

什么破百度,怎么搜都搜不到。

一经思考,直接从Github上把ApiClient代码复制一份,想到就做。

结果就成了,我怀疑是有什么东西作怪。

我复制的代码是这个层级下的,我还是把代码贴出来,方便你们使用。

import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import org.springframework.core.ParameterizedTypeReference;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.InvalidMediaTypeException;
import org.springframework.http.MediaType;
import org.springframework.http.client.reactive.ClientHttpRequest;
import org.springframework.http.codec.json.Jackson2JsonDecoder;
import org.springframework.http.codec.json.Jackson2JsonEncoder;
import org.springframework.util.CollectionUtils;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.util.StringUtils;
import org.springframework.web.client.RestClientException;
import org.springframework.web.reactive.function.BodyInserter;
import org.springframework.web.reactive.function.BodyInserters;
import org.springframework.web.reactive.function.client.ExchangeStrategies;
import org.springframework.web.reactive.function.client.WebClient;
import org.springframework.web.reactive.function.client.WebClient.ResponseSpec;
import org.springframework.web.util.UriComponentsBuilder;import javax.annotation.Nullable;
import java.text.DateFormat;
import java.text.ParseException;
import java.time.OffsetDateTime;
import java.util.*;
import java.util.Map.Entry;@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen")
public class ApiClient extends JavaTimeFormatter {public enum CollectionFormat {CSV(","), TSV("\t"), SSV(" "), PIPES("|"), MULTI(null);private final String separator;private CollectionFormat(String separator) {this.separator = separator;}private String collectionToString(Collection<?> collection) {return StringUtils.collectionToDelimitedString(collection, separator);}}private static final String URI_TEMPLATE_ATTRIBUTE = WebClient.class.getName() + ".uriTemplate";private HttpHeaders defaultHeaders = new HttpHeaders();private MultiValueMap<String, String> defaultCookies = new LinkedMultiValueMap<String, String>();private String basePath = "";private final WebClient webClient;private final DateFormat dateFormat;private final ObjectMapper objectMapper;private Map<String, Authentication> authentications;public ApiClient() {this.dateFormat = createDefaultDateFormat();this.objectMapper = createDefaultObjectMapper(this.dateFormat);this.webClient = buildWebClient(this.objectMapper);this.init();}public ApiClient(WebClient webClient) {this(Optional.ofNullable(webClient).orElseGet(() -> buildWebClient()), createDefaultDateFormat());}public ApiClient(ObjectMapper mapper, DateFormat format) {this(buildWebClient(mapper.copy()), format);}public ApiClient(WebClient webClient, ObjectMapper mapper, DateFormat format) {this(Optional.ofNullable(webClient).orElseGet(() -> buildWebClient(mapper.copy())), format);}private ApiClient(WebClient webClient, DateFormat format) {this.webClient = webClient;this.dateFormat = format;this.objectMapper = createDefaultObjectMapper(format);this.init();}public static DateFormat createDefaultDateFormat() {DateFormat dateFormat = new RFC3339DateFormat();dateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));return dateFormat;}public static ObjectMapper createDefaultObjectMapper(@Nullable DateFormat dateFormat) {if (null == dateFormat) {dateFormat = createDefaultDateFormat();}ObjectMapper mapper = new ObjectMapper();mapper.setDateFormat(dateFormat);mapper.registerModule(new JavaTimeModule());mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);return mapper;}protected void init() {// Setup authentications (key: authentication name, value: authentication).authentications = new HashMap<String, Authentication>();authentications.put("petstore_auth", new OAuth());authentications.put("api_key", new ApiKeyAuth("header", "api_key"));authentications.put("api_key_query", new ApiKeyAuth("query", "api_key_query"));authentications.put("http_basic_test", new HttpBasicAuth());authentications.put("bearer_test", new HttpBearerAuth("bearer"));// Prevent the authentications from being modified.authentications = Collections.unmodifiableMap(authentications);}/*** Build the WebClientBuilder used to make WebClient.* @param mapper ObjectMapper used for serialize/deserialize* @return WebClient*/public static WebClient.Builder buildWebClientBuilder(ObjectMapper mapper) {ExchangeStrategies strategies = ExchangeStrategies.builder().codecs(clientDefaultCodecsConfigurer -> {clientDefaultCodecsConfigurer.defaultCodecs().jackson2JsonEncoder(new Jackson2JsonEncoder(mapper, MediaType.APPLICATION_JSON));clientDefaultCodecsConfigurer.defaultCodecs().jackson2JsonDecoder(new Jackson2JsonDecoder(mapper, MediaType.APPLICATION_JSON));}).build();WebClient.Builder webClientBuilder = WebClient.builder().exchangeStrategies(strategies);return webClientBuilder;}/*** Build the WebClientBuilder used to make WebClient.* @return WebClient*/public static WebClient.Builder buildWebClientBuilder() {return buildWebClientBuilder(createDefaultObjectMapper(null));}/*** Build the WebClient used to make HTTP requests.* @param mapper ObjectMapper used for serialize/deserialize* @return WebClient*/public static WebClient buildWebClient(ObjectMapper mapper) {return buildWebClientBuilder(mapper).build();}/*** Build the WebClient used to make HTTP requests.* @return WebClient*/public static WebClient buildWebClient() {return buildWebClientBuilder(createDefaultObjectMapper(null)).build();}/*** Get the current base path* @return String the base path*/public String getBasePath() {return basePath;}/*** Set the base path, which should include the host* @param basePath the base path* @return ApiClient this client*/public ApiClient setBasePath(String basePath) {this.basePath = basePath;return this;}/*** Get authentications (key: authentication name, value: authentication).* @return Map the currently configured authentication types*/public Map<String, Authentication> getAuthentications() {return authentications;}/*** Get authentication for the given name.** @param authName The authentication name* @return The authentication, null if not found*/public Authentication getAuthentication(String authName) {return authentications.get(authName);}/*** Helper method to set access token for the first Bearer authentication.* @param bearerToken Bearer token*/public void setBearerToken(String bearerToken) {for (Authentication auth : authentications.values()) {if (auth instanceof HttpBearerAuth) {((HttpBearerAuth) auth).setBearerToken(bearerToken);return;}}throw new RuntimeException("No Bearer authentication configured!");}/*** Helper method to set username for the first HTTP basic authentication.* @param username the username*/public void setUsername(String username) {for (Authentication auth : authentications.values()) {if (auth instanceof HttpBasicAuth) {((HttpBasicAuth) auth).setUsername(username);return;}}throw new RuntimeException("No HTTP basic authentication configured!");}/*** Helper method to set password for the first HTTP basic authentication.* @param password the password*/public void setPassword(String password) {for (Authentication auth : authentications.values()) {if (auth instanceof HttpBasicAuth) {((HttpBasicAuth) auth).setPassword(password);return;}}throw new RuntimeException("No HTTP basic authentication configured!");}/*** Helper method to set API key value for the first API key authentication.* @param apiKey the API key*/public void setApiKey(String apiKey) {for (Authentication auth : authentications.values()) {if (auth instanceof ApiKeyAuth) {((ApiKeyAuth) auth).setApiKey(apiKey);return;}}throw new RuntimeException("No API key authentication configured!");}/*** Helper method to set API key prefix for the first API key authentication.* @param apiKeyPrefix the API key prefix*/public void setApiKeyPrefix(String apiKeyPrefix) {for (Authentication auth : authentications.values()) {if (auth instanceof ApiKeyAuth) {((ApiKeyAuth) auth).setApiKeyPrefix(apiKeyPrefix);return;}}throw new RuntimeException("No API key authentication configured!");}/*** Helper method to set access token for the first OAuth2 authentication.* @param accessToken the access token*/public void setAccessToken(String accessToken) {for (Authentication auth : authentications.values()) {if (auth instanceof OAuth) {((OAuth) auth).setAccessToken(accessToken);return;}}throw new RuntimeException("No OAuth2 authentication configured!");}/*** Set the User-Agent header's value (by adding to the default header map).* @param userAgent the user agent string* @return ApiClient this client*/public ApiClient setUserAgent(String userAgent) {addDefaultHeader("User-Agent", userAgent);return this;}/*** Add a default header.** @param name The header's name* @param value The header's value* @return ApiClient this client*/public ApiClient addDefaultHeader(String name, String value) {if (defaultHeaders.containsKey(name)) {defaultHeaders.remove(name);}defaultHeaders.add(name, value);return this;}/*** Add a default cookie.** @param name The cookie's name* @param value The cookie's value* @return ApiClient this client*/public ApiClient addDefaultCookie(String name, String value) {if (defaultCookies.containsKey(name)) {defaultCookies.remove(name);}defaultCookies.add(name, value);return this;}/*** Get the date format used to parse/format date parameters.* @return DateFormat format*/public DateFormat getDateFormat() {return dateFormat;}/*** Parse the given string into Date object.*/public Date parseDate(String str) {try {return dateFormat.parse(str);} catch (ParseException e) {throw new RuntimeException(e);}}/*** Format the given Date object into string.*/public String formatDate(Date date) {return dateFormat.format(date);}/*** Get the ObjectMapper used to make HTTP requests.* @return ObjectMapper objectMapper*/public ObjectMapper getObjectMapper() {return objectMapper;}/*** Get the WebClient used to make HTTP requests.* @return WebClient webClient*/public WebClient getWebClient() {return webClient;}/*** Format the given parameter object into string.* @param param the object to convert* @return String the parameter represented as a String*/public String parameterToString(Object param) {if (param == null) {return "";} else if (param instanceof Date) {return formatDate( (Date) param);} else if (param instanceof OffsetDateTime) {return formatOffsetDateTime((OffsetDateTime) param);} else if (param instanceof Collection) {StringBuilder b = new StringBuilder();for(Object o : (Collection<?>) param) {if(b.length() > 0) {b.append(",");}b.append(String.valueOf(o));}return b.toString();} else {return String.valueOf(param);}}/*** Converts a parameter to a {@link MultiValueMap} for use in REST requests* @param collectionFormat The format to convert to* @param name The name of the parameter* @param value The parameter's value* @return a Map containing the String value(s) of the input parameter*/public MultiValueMap<String, String> parameterToMultiValueMap(CollectionFormat collectionFormat, String name, Object value) {final MultiValueMap<String, String> params = new LinkedMultiValueMap<String, String>();if (name == null || name.isEmpty() || value == null) {return params;}if(collectionFormat == null) {collectionFormat = CollectionFormat.CSV;}if (value instanceof Map) {@SuppressWarnings("unchecked")final Map<String, Object> valuesMap = (Map<String, Object>) value;for (final Entry<String, Object> entry : valuesMap.entrySet()) {params.add(entry.getKey(), parameterToString(entry.getValue()));}return params;}Collection<?> valueCollection = null;if (value instanceof Collection) {valueCollection = (Collection<?>) value;} else {params.add(name, parameterToString(value));return params;}if (valueCollection.isEmpty()){return params;}if (collectionFormat.equals(CollectionFormat.MULTI)) {for (Object item : valueCollection) {params.add(name, parameterToString(item));}return params;}List<String> values = new ArrayList<String>();for(Object o : valueCollection) {values.add(parameterToString(o));}params.add(name, collectionFormat.collectionToString(values));return params;}/*** Check if the given {@code String} is a JSON MIME.* @param mediaType the input MediaType* @return boolean true if the MediaType represents JSON, false otherwise*/public boolean isJsonMime(String mediaType) {// "* / *" is default to JSONif ("*/*".equals(mediaType)) {return true;}try {return isJsonMime(MediaType.parseMediaType(mediaType));} catch (InvalidMediaTypeException e) {}return false;}/*** Check if the given MIME is a JSON MIME.* JSON MIME examples:*     application/json*     application/json; charset=UTF8*     APPLICATION/JSON* @param mediaType the input MediaType* @return boolean true if the MediaType represents JSON, false otherwise*/public boolean isJsonMime(MediaType mediaType) {return mediaType != null && (MediaType.APPLICATION_JSON.isCompatibleWith(mediaType) || mediaType.getSubtype().matches("^.*(\\+json|ndjson)[;]?\\s*$"));}/*** Check if the given {@code String} is a Problem JSON MIME (RFC-7807).* @param mediaType the input MediaType* @return boolean true if the MediaType represents Problem JSON, false otherwise*/public boolean isProblemJsonMime(String mediaType) {return "application/problem+json".equalsIgnoreCase(mediaType);}/*** Select the Accept header's value from the given accepts array:*     if JSON exists in the given array, use it;*     otherwise use all of them (joining into a string)** @param accepts The accepts array to select from* @return List The list of MediaTypes to use for the Accept header*/public List<MediaType> selectHeaderAccept(String[] accepts) {if (accepts.length == 0) {return null;}for (String accept : accepts) {MediaType mediaType = MediaType.parseMediaType(accept);if (isJsonMime(mediaType) && !isProblemJsonMime(accept)) {return Collections.singletonList(mediaType);}}return MediaType.parseMediaTypes(StringUtils.arrayToCommaDelimitedString(accepts));}/*** Select the Content-Type header's value from the given array:*     if JSON exists in the given array, use it;*     otherwise use the first one of the array.** @param contentTypes The Content-Type array to select from* @return MediaType The Content-Type header to use. If the given array is empty, null will be returned.*/public MediaType selectHeaderContentType(String[] contentTypes) {if (contentTypes.length == 0) {return null;}for (String contentType : contentTypes) {MediaType mediaType = MediaType.parseMediaType(contentType);if (isJsonMime(mediaType)) {return mediaType;}}return MediaType.parseMediaType(contentTypes[0]);}/*** Select the body to use for the request* @param obj the body object* @param formParams the form parameters* @param contentType the content type of the request* @return Object the selected body*/protected BodyInserter<?, ? super ClientHttpRequest> selectBody(Object obj, MultiValueMap<String, Object> formParams, MediaType contentType) {if(MediaType.APPLICATION_FORM_URLENCODED.equals(contentType)) {MultiValueMap<String, String> map = new LinkedMultiValueMap<>();formParams.toSingleValueMap().entrySet().forEach(es -> map.add(es.getKey(), String.valueOf(es.getValue())));return BodyInserters.fromFormData(map);} else if(MediaType.MULTIPART_FORM_DATA.equals(contentType)) {return BodyInserters.fromMultipartData(formParams);} else {return obj != null ? BodyInserters.fromValue(obj) : null;}}/*** Invoke API by sending HTTP request with the given options.** @param <T> the return type to use* @param path The sub-path of the HTTP URL* @param method The request method* @param pathParams The path parameters* @param queryParams The query parameters* @param body The request body object* @param headerParams The header parameters* @param formParams The form parameters* @param accept The request's Accept header* @param contentType The request's Content-Type header* @param authNames The authentications to apply* @param returnType The return type into which to deserialize the response* @return The response body in chosen type*/public <T> ResponseSpec invokeAPI(String path, HttpMethod method, Map<String, Object> pathParams, MultiValueMap<String, String> queryParams, Object body, HttpHeaders headerParams, MultiValueMap<String, String> cookieParams, MultiValueMap<String, Object> formParams, List<MediaType> accept, MediaType contentType, String[] authNames, ParameterizedTypeReference<T> returnType) throws RestClientException {final WebClient.RequestBodySpec requestBuilder = prepareRequest(path, method, pathParams, queryParams, body, headerParams, cookieParams, formParams, accept, contentType, authNames);return requestBuilder.retrieve();}/*** Include queryParams in uriParams taking into account the paramName* @param queryParams The query parameters* @param uriParams The path parameters* return templatized query string*/private String generateQueryUri(MultiValueMap<String, String> queryParams, Map<String, Object> uriParams) {StringBuilder queryBuilder = new StringBuilder();queryParams.forEach((name, values) -> {if (CollectionUtils.isEmpty(values)) {if (queryBuilder.length() != 0) {queryBuilder.append('&');}queryBuilder.append(name);} else {int valueItemCounter = 0;for (Object value : values) {if (queryBuilder.length() != 0) {queryBuilder.append('&');}queryBuilder.append(name);if (value != null) {String templatizedKey = name + valueItemCounter++;uriParams.put(templatizedKey, value.toString());queryBuilder.append('=').append("{").append(templatizedKey).append("}");}}}});return queryBuilder.toString();}private WebClient.RequestBodySpec prepareRequest(String path, HttpMethod method, Map<String, Object> pathParams,MultiValueMap<String, String> queryParams, Object body, HttpHeaders headerParams,MultiValueMap<String, String> cookieParams, MultiValueMap<String, Object> formParams, List<MediaType> accept,MediaType contentType, String[] authNames) {updateParamsForAuth(authNames, queryParams, headerParams, cookieParams);final UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(basePath).path(path);String finalUri = builder.build(false).toUriString();Map<String, Object> uriParams = new HashMap<>();uriParams.putAll(pathParams);if (queryParams != null && !queryParams.isEmpty()) {//Include queryParams in uriParams taking into account the paramNameString queryUri = generateQueryUri(queryParams, uriParams);//Append to finalUri the templatized query string like "?param1={param1Value}&.......finalUri += "?" + queryUri;}final WebClient.RequestBodySpec requestBuilder = webClient.method(method).uri(finalUri, uriParams);if (accept != null) {requestBuilder.accept(accept.toArray(new MediaType[accept.size()]));}if(contentType != null) {requestBuilder.contentType(contentType);}addHeadersToRequest(headerParams, requestBuilder);addHeadersToRequest(defaultHeaders, requestBuilder);addCookiesToRequest(cookieParams, requestBuilder);addCookiesToRequest(defaultCookies, requestBuilder);requestBuilder.attribute(URI_TEMPLATE_ATTRIBUTE, path);requestBuilder.body(selectBody(body, formParams, contentType));return requestBuilder;}/*** Add headers to the request that is being built* @param headers The headers to add* @param requestBuilder The current request*/protected void addHeadersToRequest(HttpHeaders headers, WebClient.RequestBodySpec requestBuilder) {for (Entry<String, List<String>> entry : headers.entrySet()) {List<String> values = entry.getValue();for(String value : values) {if (value != null) {requestBuilder.header(entry.getKey(), value);}}}}/*** Add cookies to the request that is being built* @param cookies The cookies to add* @param requestBuilder The current request*/protected void addCookiesToRequest(MultiValueMap<String, String> cookies, WebClient.RequestBodySpec requestBuilder) {for (Entry<String, List<String>> entry : cookies.entrySet()) {List<String> values = entry.getValue();for(String value : values) {if (value != null) {requestBuilder.cookie(entry.getKey(), value);}}}}/*** Update query and header parameters based on authentication settings.** @param authNames The authentications to apply* @param queryParams The query parameters* @param headerParams The header parameters* @param cookieParams the cookie parameters*/protected void updateParamsForAuth(String[] authNames, MultiValueMap<String, String> queryParams, HttpHeaders headerParams, MultiValueMap<String, String> cookieParams) {for (String authName : authNames) {Authentication auth = authentications.get(authName);if (auth == null) {throw new RestClientException("Authentication undefined: " + authName);}auth.applyToParams(queryParams, headerParams, cookieParams);}}/*** Formats the specified collection path parameter to a string value.** @param collectionFormat The collection format of the parameter.* @param values The values of the parameter.* @return String representation of the parameter*/public String collectionPathParameterToString(CollectionFormat collectionFormat, Collection<?> values) {// create the value based on the collection formatif (CollectionFormat.MULTI.equals(collectionFormat)) {// not valid for path paramsreturn parameterToString(values);}// collectionFormat is assumed to be "csv" by defaultif(collectionFormat == null) {collectionFormat = CollectionFormat.CSV;}return collectionFormat.collectionToString(values);}
}
import org.springframework.http.HttpHeaders;
import org.springframework.util.MultiValueMap;@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen")
public class ApiKeyAuth implements Authentication {private final String location;private final String paramName;private String apiKey;private String apiKeyPrefix;public ApiKeyAuth(String location, String paramName) {this.location = location;this.paramName = paramName;}public String getLocation() {return location;}public String getParamName() {return paramName;}public String getApiKey() {return apiKey;}public void setApiKey(String apiKey) {this.apiKey = apiKey;}public String getApiKeyPrefix() {return apiKeyPrefix;}public void setApiKeyPrefix(String apiKeyPrefix) {this.apiKeyPrefix = apiKeyPrefix;}@Overridepublic void applyToParams(MultiValueMap<String, String> queryParams, HttpHeaders headerParams, MultiValueMap<String, String> cookieParams) {if (apiKey == null) {return;}String value;if (apiKeyPrefix != null) {value = apiKeyPrefix + " " + apiKey;} else {value = apiKey;}if (location.equals("query")) {queryParams.add(paramName, value);} else if (location.equals("header")) {headerParams.add(paramName, value);} else if (location.equals("cookie")) {cookieParams.add(paramName, value);}}
}
public interface Authentication {/*** Apply authentication settings to header and / or query parameters.* @param queryParams The query parameters for the request* @param headerParams The header parameters for the request* @param cookieParams The cookie parameters for the request*/public void applyToParams(MultiValueMap<String, String> queryParams, HttpHeaders headerParams, MultiValueMap<String, String> cookieParams);
}
import org.springframework.http.HttpHeaders;
import org.springframework.util.MultiValueMap;import java.nio.charset.StandardCharsets;
import java.util.Base64;@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen")
public class HttpBasicAuth implements Authentication {private String username;private String password;public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}@Overridepublic void applyToParams(MultiValueMap<String, String> queryParams, HttpHeaders headerParams, MultiValueMap<String, String> cookieParams) {if (username == null && password == null) {return;}String str = (username == null ? "" : username) + ":" + (password == null ? "" : password);headerParams.add(HttpHeaders.AUTHORIZATION, "Basic " + Base64.getEncoder().encodeToString(str.getBytes(StandardCharsets.UTF_8)));}
}
import org.springframework.http.HttpHeaders;
import org.springframework.util.MultiValueMap;@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen")
public class HttpBearerAuth implements Authentication {private final String scheme;private String bearerToken;public HttpBearerAuth(String scheme) {this.scheme = scheme;}public String getBearerToken() {return bearerToken;}public void setBearerToken(String bearerToken) {this.bearerToken = bearerToken;}@Overridepublic void applyToParams(MultiValueMap<String, String> queryParams, HttpHeaders headerParams, MultiValueMap<String, String> cookieParams) {if (bearerToken == null) {return;}headerParams.add(HttpHeaders.AUTHORIZATION, (scheme != null ? upperCaseBearer(scheme) + " " : "") + bearerToken);}private static String upperCaseBearer(String scheme) {return ("bearer".equalsIgnoreCase(scheme)) ? "Bearer" : scheme;}}
import java.time.OffsetDateTime;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;/*** Class that add parsing/formatting support for Java 8+ {@code OffsetDateTime} class.* It's generated for java clients when {@code AbstractJavaCodegen#dateLibrary} specified as {@code java8}.*/
@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen")
public class JavaTimeFormatter {private DateTimeFormatter offsetDateTimeFormatter = DateTimeFormatter.ISO_OFFSET_DATE_TIME;/*** Get the date format used to parse/format {@code OffsetDateTime} parameters.* @return DateTimeFormatter*/public DateTimeFormatter getOffsetDateTimeFormatter() {return offsetDateTimeFormatter;}/*** Set the date format used to parse/format {@code OffsetDateTime} parameters.* @param offsetDateTimeFormatter {@code DateTimeFormatter}*/public void setOffsetDateTimeFormatter(DateTimeFormatter offsetDateTimeFormatter) {this.offsetDateTimeFormatter = offsetDateTimeFormatter;}/*** Parse the given string into {@code OffsetDateTime} object.* @param str String* @return {@code OffsetDateTime}*/public OffsetDateTime parseOffsetDateTime(String str) {try {return OffsetDateTime.parse(str, offsetDateTimeFormatter);} catch (DateTimeParseException e) {throw new RuntimeException(e);}}/*** Format the given {@code OffsetDateTime} object into string.* @param offsetDateTime {@code OffsetDateTime}* @return {@code OffsetDateTime} in string format*/public String formatOffsetDateTime(OffsetDateTime offsetDateTime) {return offsetDateTimeFormatter.format(offsetDateTime);}
}
import org.springframework.http.HttpHeaders;
import org.springframework.util.MultiValueMap;@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen")
public class OAuth implements Authentication {private String accessToken;public String getAccessToken() {return accessToken;}public void setAccessToken(String accessToken) {this.accessToken = accessToken;}@Overridepublic void applyToParams(MultiValueMap<String, String> queryParams, HttpHeaders headerParams, MultiValueMap<String, String> cookieParams) {if (accessToken != null) {headerParams.add(HttpHeaders.AUTHORIZATION, "Bearer " + accessToken);}}
}
@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen")
public class Pair {private String name = "";private String value = "";public Pair (String name, String value) {setName(name);setValue(value);}private void setName(String name) {if (!isValidString(name)) {return;}this.name = name;}private void setValue(String value) {if (!isValidString(value)) {return;}this.value = value;}public String getName() {return this.name;}public String getValue() {return this.value;}private boolean isValidString(String arg) {if (arg == null) {return false;}return true;}
}
import com.fasterxml.jackson.databind.util.StdDateFormat;import java.text.DateFormat;
import java.text.FieldPosition;
import java.text.ParsePosition;
import java.util.Date;
import java.text.DecimalFormat;
import java.util.GregorianCalendar;
import java.util.TimeZone;public class RFC3339DateFormat extends DateFormat {private static final long serialVersionUID = 1L;private static final TimeZone TIMEZONE_Z = TimeZone.getTimeZone("UTC");private final StdDateFormat fmt = new StdDateFormat().withTimeZone(TIMEZONE_Z).withColonInTimeZone(true);public RFC3339DateFormat() {this.calendar = new GregorianCalendar();this.numberFormat = new DecimalFormat();}@Overridepublic Date parse(String source) {return parse(source, new ParsePosition(0));}@Overridepublic Date parse(String source, ParsePosition pos) {return fmt.parse(source, pos);}@Overridepublic StringBuffer format(Date date, StringBuffer toAppendTo, FieldPosition fieldPosition) {return fmt.format(date, toAppendTo, fieldPosition);}@Overridepublic Object clone() {return super.clone();}
}

大功告成,欧了

更多推荐

【OpenApi Generator】入门和调试

本文发布于:2023-11-17 03:12:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1636361.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:入门   OpenApi   Generator

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!