如何写springboot项目api的sdk

如何写springboot项目api的sdk?

1.重要的类,需要用到springboot中的 RestTemplate restTemplate;这个类,方式都是注入的方式,注意依赖需要进行加入进去。

2.ObjectMapper mapper = new ObjectMapper();这个类的作用是将对象转化为String类型的json数据,等转化的类,这里我们需要用到

3.方法:demo案例

public String doPostWithFileUpload( File file, FileTransferEntity fileTransferEntity,String chnlCode,String encryptType){
        String url = serviceUtil.geturl();
        url=url+"/universalFileTransfer/fileUpload";
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.MULTIPART_FORM_DATA);
        //File file = new File("D:\\360MoveData\\Users\\Administrator\\Pictures\\测试图片\\测试3.txt");
        FileSystemResource fileSystemResource = new FileSystemResource(file);
        MultiValueMap<String, Object> form = new LinkedMultiValueMap<>();
        form.add("file",fileSystemResource);
        String s = null;
        try {
            s = mapper.writeValueAsString(fileTransferEntity);
        } catch (JsonProcessingException e) {
            e.printStackTrace();
        }
        form.add("body",s);
        form.add("chnlCode",chnlCode);
        form.add("encryptType",encryptType);
        HttpEntity<MultiValueMap<String, Object>> files = new HttpEntity<>(form, headers);
        String s1 = restTemplate.postForObject(url, files, String.class);
        String strs = new String(s1.getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8);
        return strs;
    }
 public String doPostWithFileDownload(FileTransferReq fileTransferReq){
        String url = serviceUtil.geturl();
        url = url+"/universalFileTransfer/fileDownload";
        System.out.println("----------------------url"+url);
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_JSON);
        String s = null;
        try {
            s = mapper.writeValueAsString(fileTransferReq);
        } catch (JsonProcessingException e) {
            e.printStackTrace();
        }
        HttpEntity<String> files = new HttpEntity<>(s, headers);
        String s1 = restTemplate.postForObject(url, files, String.class);
        String strs = new String(s1.getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8);
        return strs;
    }

4.从配置文件中获取需要的数据:

demo:

Properties properties;
    {
        try {
            properties = PropertiesLoaderUtils.loadAllProperties("application.yml");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public String geturl(){
        String eftp_service = properties.getProperty("eftp_service");
        String eftp_url = properties.getProperty("eftp_url");
        if(eftp_url!=null&&!eftp_url.equals("")){
        return eftp_url;

        }else if(eftp_service!=null && !eftp_service.equals("")){

            return eftp_service;

        }else {
            throw new NullPointerException("没有配置eftp——Url");
        }

    }

5.RestTemplateConfig类

package com.web.config;

import com.web.util.Commonutil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.client.ClientHttpRequestFactory;
import org.springframework.http.client.SimpleClientHttpRequestFactory;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.StringHttpMessageConverter;
import org.springframework.web.client.RestTemplate;

import java.nio.charset.Charset;
import java.util.List;

/**
 * 字符编码
 * LIMAODONG
 */
@Configuration
public class RestTemplateConfig {
    @Autowired
   private Commonutil commonutil;


    @Bean
    public RestTemplate restTemplate() {
        return new  RestTemplate();
    }

    /**
     * 修改StringHttpMessageConverter字符编码
     * @param charset
     * @param
     * @return
     */
    public static RestTemplate getInstance(String charset) {
        RestTemplate restTemplate = new RestTemplate();
        List<HttpMessageConverter<?>> list = restTemplate.getMessageConverters();
        for (HttpMessageConverter<?> httpMessageConverter : list) {
            if (httpMessageConverter instanceof StringHttpMessageConverter) {
                ((StringHttpMessageConverter) httpMessageConverter).setDefaultCharset(Charset.forName(charset));
                break;
            }
        }
        return restTemplate;
    }

    @Bean
    public ClientHttpRequestFactory simpleClientHttpRequestFactory() {
        SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
        int readTimeout = commonutil.getReadTimeout();
        factory.setReadTimeout(readTimeout);//restTemplate 请求超时时间
        int connectTimeout = commonutil.getConnectTimeout();
        factory.setConnectTimeout(connectTimeout);// 连接超时
        return factory;
    }
}

6.将sdk设置为maven本地仓库模式
1.在Maven本地仓库进行jar包导入:
将jar包依赖放在maven本地仓库,可以使用maven的install:install-file命令。
命令格式如下:

mvn install:install-file -Dfile=<path-to-file> -DgroupId=<group-id> -DartifactId=<artifact-id> -Dversion=<version> -Dpackaging=<packaging>

参数说明:
- `<path-to-file>`: jar 文件的路径
- `<group-id>`:  组织标识,一般使用公司或者项目的包名
- `<artifact-id>`:  项目标识,一般使用项目名称
- `<version>`:  版本号
- `<packaging>`:  打包方式,jar包这里填写jar
一个示例如下:
```shell
mvn install:install-file -Dfile=C:\Users\Admin\Desktop\mylib.jar -DgroupId=com.mycompany -DartifactId=mylib -Dversion=1.0 -Dpackaging=jar

这个命令会把mylib.jar这个文件作为com.mycompany:mylib:1.0这个依赖放在 Maven 本地仓库中。以后在pom.xml中就可以直接引用这个依赖了。

<dependency>
    <groupId>com.mycompany</groupId>
    <artifactId>mylib</artifactId>
    <version>1.0</version>
</dependency>

案例:这边先找到我们jar包的本地路径

D:\360MoveData\Users\Administrator\Desktop\东华\init
然后在idea的命令行执行命令
mvn install:install-file -Dfile=D:\360MoveData\Users\Administrator\Desktop\东华\init\sdkdemo-1.0-SNAPSHOT.jar -DgroupId=com.web -Dar
tifactId=mylib -Dversion=1.0 -Dpackaging=jar
执行完成后根据自己的命令将本地仓库中的依赖引入即可



2.方法的使用
首先修改配置文件在application.yml的配置文件下配置



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值