spring - 如何使用休息模板维护休息调用的实用程序类?

标签 spring rest

我在服务实现中的每个方法都使用休息模板,有什么方法可以为休息模板创建实用程序类来传递 url 和请求参数?

感谢和问候

安妮塔·帕蒂尔

最佳答案

如果我添加了几乎所有的http方法,请引用这个代码片段

package com.util;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.util.UriComponentsBuilder;

@Service
public class HttpService
{
	private static final Logger logger = LogManager.getLogger(HttpService.class);
	private final RestTemplate restTemplate;

	@Autowired
	public HttpService(RestTemplate restTemplate) {this.restTemplate = restTemplate;}

	/**
	 * The simple get request
	 * @param url - url need to call
	 * @return
	 */
	public ResponseEntity  get(String url)
	{
		return restTemplate.getForEntity(url, String.class);
	}


	/**
	 *
	 * @param builder - contain url and request parameter
	 * @return
	 */
	public ResponseEntity  get(UriComponentsBuilder builder)
	{
		return restTemplate.getForEntity(builder.build().toUri(), String.class);
	}

	/**
	 * The get request with request parameters
	 * @param builder - Uri builder contain url and request parameter
	 * @param httpHeaders - header need to send
	 * @return
	 */
	public ResponseEntity get(UriComponentsBuilder builder, HttpHeaders httpHeaders){

		HttpEntity<?> entity = new HttpEntity<>(httpHeaders);
		return restTemplate.exchange(builder.build().toUri(), HttpMethod.GET, entity, String.class);
	}

	public <T> ResponseEntity<T> get(UriComponentsBuilder builder, HttpHeaders httpHeaders, Class<T> responseType){

		HttpEntity<HttpHeaders> entity = new HttpEntity<>(httpHeaders);
		return restTemplate.exchange(builder.build().toUri(), HttpMethod.GET, entity, responseType);
	}
	/**
	 * The get method can be use for sending http get request with header parameter
	 * @param url - request url that need to call
	 * @param headers -  header that need to send.
	 * @return
	 */
	public ResponseEntity get(String url, HttpHeaders headers){
		HttpEntity<String> entity= new HttpEntity<>(headers);
		return restTemplate.exchange(url, HttpMethod.GET, entity, String.class);
	}

	/**
	 * The post method can use for post request with Request entity and Header
	 * The response will be return in response type class
	 * For passing header we need pass header in HttpEntity along with class that has to be send in request.
	 * example HttpEntity(object,header)
	 * For calling post with header only then we need to pass HttpEntity with header
	 * example HttpEntity(header);
	 * @param builder
	 * @param entity
	 * @param response
	 * @param <T>
	 * @param <P>
	 * @return
	 */
	public <T,P> T post(UriComponentsBuilder builder, HttpEntity<P> entity, Class<T> response){

		return restTemplate.postForObject(builder.build().toUri(), entity, response);
	}

	public void put() throws Exception
	{
		throw new Exception("not implemeted yet, implement when required");
	}

   }

关于spring - 如何使用休息模板维护休息调用的实用程序类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48077393/

相关文章:

java - 我们可以在 Spring Batch 的 Tasklet 中使用 @Autowired 吗?

spring - Spring 中特定咖啡因缓存的配置

javascript - 在 javascript 中休息 api 身份验证

java - Spring RequestBody 将 JSON 转换为 String

java - 休息问题 使用rest easy的服务

rest - GitHub 的 API 现在拒绝没有用户代理的 HTTP 请求 - 谁能告诉我为什么?

java - 如何在没有 web 容器的情况下加载 spring

java - 在 Spring-Cloud-Netflix 中为 AWS 配置 EurekaInstanceConfigBean (Brixton.RELEASE)

java - 使用绑定(bind)变量创建 SQL 查询时出错 - Spring 中的 JDBCTemplate

php - 使用 PHP PayPal REST API 退款?