Java 如何在SpringMVC应用程序中使用RESTAPI调用在JIRA中创建项目?

Java 如何在SpringMVC应用程序中使用RESTAPI调用在JIRA中创建项目?,java,api,rest,project,jira,Java,Api,Rest,Project,Jira,我需要使用基本授权,然后通过RESTAPI调用在JIRA中创建一个项目。我不能清楚地从以下几点得到答案 我需要一个工作示例。因为它是一个RESTAPI,所以可以使用RestTemplate,这是一种特定于Spring的REST调用方法 import org.springframework.http.*; import org.springframework.web.client.RestTemplate; import java.util.Base64; pu

我需要使用基本授权,然后通过RESTAPI调用在JIRA中创建一个项目。我不能清楚地从以下几点得到答案


我需要一个工作示例。

因为它是一个RESTAPI,所以可以使用RestTemplate,这是一种特定于Spring的REST调用方法

    import org.springframework.http.*;
    import org.springframework.web.client.RestTemplate;

    import java.util.Base64;

    public class Application {

        private static final String username = "user@domain.com";
        private static final String password = "password";
        private static final String jiraBaseURL = "https://jira.domain.com/rest/api/2/";
        private RestTemplate restTemplate;
        private HttpHeaders httpHeaders;

        public Application() {
            restTemplate = new RestTemplate();
            httpHeaders = createHeadersWithAuthentication();
        }

        private HttpHeaders createHeadersWithAuthentication() {
            String plainCreds = username + ":" + password;
            byte[] base64CredsBytes = Base64.getEncoder().encode(plainCreds.getBytes());
            String base64Creds = new String(base64CredsBytes);

            HttpHeaders headers = new HttpHeaders();
            headers.add("Authorization", "Basic " + base64Creds);

            return headers;
        }

        public ResponseEntity getIssue(String issueId) {
            String url = jiraBaseURL + "issue/" + issueId;

            HttpEntity<?> requestEntity = new HttpEntity(httpHeaders);
            return restTemplate.exchange(url, HttpMethod.GET, requestEntity, String.class);
        }

        public ResponseEntity createIssue(String key, String summary, String description, String issueType) {
            String createIssueJSON = createCreateIssueJSON(key, summary, description, issueType);

            String url = jiraBaseURL + "issue";

            httpHeaders.setContentType(MediaType.APPLICATION_JSON);

            HttpEntity<String> requestEntity = new HttpEntity<String>(createIssueJSON, httpHeaders);

            return restTemplate.exchange(url, HttpMethod.POST, requestEntity, String.class);

        }

        private String createCreateIssueJSON(String key, String summary, String description, String issueType) {
            String createIssueJSON = "{\"fields\":{\"project\":{\"key\":\"$KEY\"},\"summary\":\"$SUMMARY\",\"description\":\"$DESCRIPTION\",\"issuetype\": {\"name\": \"$ISSUETYPE\"}}}";

            createIssueJSON = createIssueJSON.replace("$KEY", key);
            createIssueJSON = createIssueJSON.replace("$SUMMARY", summary);
            createIssueJSON = createIssueJSON.replace("$DESCRIPTION", description);
            return createIssueJSON.replace("$ISSUETYPE", issueType);
        }

    }
import org.springframework.http.*;
导入org.springframework.web.client.rest模板;
导入java.util.Base64;
公共类应用程序{
私有静态最终字符串用户名=”user@domain.com";
私有静态最终字符串password=“password”;
私有静态最终字符串jiraBaseURL=”https://jira.domain.com/rest/api/2/";
私有RestTemplate RestTemplate;
私有HttpHeaders HttpHeaders;
公共应用程序(){
restTemplate=新的restTemplate();
httpHeaders=createHeadersWithAuthentication();
}
私有HttpHeaders createHeadersWithAuthentication(){
字符串plainCreds=username+“:”+密码;
byte[]base64CredsBytes=Base64.getEncoder().encode(plainCreds.getBytes());
String base64Creds=新字符串(base64CredsBytes);
HttpHeaders=新的HttpHeaders();
标题。添加(“授权”、“基本”+base64Creds);
返回标题;
}
公共响应属性getIssue(字符串issueId){
字符串url=jiraBaseURL+“issue/”+issueId;
HttpEntity requestEntity=新的HttpEntity(httpHeaders);
返回restemplate.exchange(url,HttpMethod.GET,requestEntity,String.class);
}
公共响应属性createIssue(字符串键、字符串摘要、字符串描述、字符串issueType){
字符串createIssueJSON=createCreateIssueJSON(键、摘要、描述、issueType);
字符串url=jiraBaseURL+“问题”;
httpHeaders.setContentType(MediaType.APPLICATION_JSON);
HttpEntity requestEntity=新的HttpEntity(createIssueJSON,httpHeaders);
返回restemplate.exchange(url、HttpMethod.POST、requestEntity、String.class);
}
私有字符串CreateIssueJSON(字符串键、字符串摘要、字符串描述、字符串issueType){
字符串createIssueJSON=“{\”字段\“:{\”项目\“:{\”键\“:\”$key\”}、\”摘要\“:\”$summary\”、\”描述\“:\“$description\”、\”issuetype\“:{\”名称\“:\“$issuetype\”}”;
createIssueJSON=createIssueJSON.replace(“$KEY”,KEY);
createIssueJSON=createIssueJSON.replace(“$SUMMARY”,SUMMARY);
createIssueJSON=createIssueJSON.replace(“$DESCRIPTION”,DESCRIPTION);
返回createIssueJSON.replace(“$ISSUETYPE”,ISSUETYPE);
}
}
有关更多详细信息,请阅读以下博文:

完整代码如下:

因为它是RESTAPI,所以可以使用RestTemplate,这是一种特定于Spring的REST调用方法

    import org.springframework.http.*;
    import org.springframework.web.client.RestTemplate;

    import java.util.Base64;

    public class Application {

        private static final String username = "user@domain.com";
        private static final String password = "password";
        private static final String jiraBaseURL = "https://jira.domain.com/rest/api/2/";
        private RestTemplate restTemplate;
        private HttpHeaders httpHeaders;

        public Application() {
            restTemplate = new RestTemplate();
            httpHeaders = createHeadersWithAuthentication();
        }

        private HttpHeaders createHeadersWithAuthentication() {
            String plainCreds = username + ":" + password;
            byte[] base64CredsBytes = Base64.getEncoder().encode(plainCreds.getBytes());
            String base64Creds = new String(base64CredsBytes);

            HttpHeaders headers = new HttpHeaders();
            headers.add("Authorization", "Basic " + base64Creds);

            return headers;
        }

        public ResponseEntity getIssue(String issueId) {
            String url = jiraBaseURL + "issue/" + issueId;

            HttpEntity<?> requestEntity = new HttpEntity(httpHeaders);
            return restTemplate.exchange(url, HttpMethod.GET, requestEntity, String.class);
        }

        public ResponseEntity createIssue(String key, String summary, String description, String issueType) {
            String createIssueJSON = createCreateIssueJSON(key, summary, description, issueType);

            String url = jiraBaseURL + "issue";

            httpHeaders.setContentType(MediaType.APPLICATION_JSON);

            HttpEntity<String> requestEntity = new HttpEntity<String>(createIssueJSON, httpHeaders);

            return restTemplate.exchange(url, HttpMethod.POST, requestEntity, String.class);

        }

        private String createCreateIssueJSON(String key, String summary, String description, String issueType) {
            String createIssueJSON = "{\"fields\":{\"project\":{\"key\":\"$KEY\"},\"summary\":\"$SUMMARY\",\"description\":\"$DESCRIPTION\",\"issuetype\": {\"name\": \"$ISSUETYPE\"}}}";

            createIssueJSON = createIssueJSON.replace("$KEY", key);
            createIssueJSON = createIssueJSON.replace("$SUMMARY", summary);
            createIssueJSON = createIssueJSON.replace("$DESCRIPTION", description);
            return createIssueJSON.replace("$ISSUETYPE", issueType);
        }

    }
import org.springframework.http.*;
导入org.springframework.web.client.rest模板;
导入java.util.Base64;
公共类应用程序{
私有静态最终字符串用户名=”user@domain.com";
私有静态最终字符串password=“password”;
私有静态最终字符串jiraBaseURL=”https://jira.domain.com/rest/api/2/";
私有RestTemplate RestTemplate;
私有HttpHeaders HttpHeaders;
公共应用程序(){
restTemplate=新的restTemplate();
httpHeaders=createHeadersWithAuthentication();
}
私有HttpHeaders createHeadersWithAuthentication(){
字符串plainCreds=username+“:”+密码;
byte[]base64CredsBytes=Base64.getEncoder().encode(plainCreds.getBytes());
String base64Creds=新字符串(base64CredsBytes);
HttpHeaders=新的HttpHeaders();
标题。添加(“授权”、“基本”+base64Creds);
返回标题;
}
公共响应属性getIssue(字符串issueId){
字符串url=jiraBaseURL+“issue/”+issueId;
HttpEntity requestEntity=新的HttpEntity(httpHeaders);
返回restemplate.exchange(url,HttpMethod.GET,requestEntity,String.class);
}
公共响应属性createIssue(字符串键、字符串摘要、字符串描述、字符串issueType){
字符串createIssueJSON=createCreateIssueJSON(键、摘要、描述、issueType);
字符串url=jiraBaseURL+“问题”;
httpHeaders.setContentType(MediaType.APPLICATION_JSON);
HttpEntity requestEntity=新的HttpEntity(createIssueJSON,httpHeaders);
返回restemplate.exchange(url、HttpMethod.POST、requestEntity、String.class);
}
私有字符串CreateIssueJSON(字符串键、字符串摘要、字符串描述、字符串issueType){
字符串createIssueJSON=“{\”字段\“:{\”项目\“:{\”键\“:\”$key\”}、\”摘要\“:\”$summary\”、\”描述\“:\“$description\”、\”issuetype\“:{\”名称\“:\“$issuetype\”}”;
createIssueJSON=createIssueJSON.replace(“$KEY”,KEY);
createIssueJSON=createIssueJSON.replace(“$SUMMARY”,SUMMARY);
createIssueJSON=createIssueJSON.replace(“$DESCRIPTION”,DESCRIPTION);
返回createIssueJSON.replace(“$ISSUETYPE”,ISSUETYPE);
}
}
有关更多详细信息,请阅读以下博文:

完整代码如下:

你需要向人们展示你的尝试,并提出具体问题。也就是说,为什么会出现错误,或者为什么会抛出错误,等等。这个URL只是简单地说,您可以使用该格式的
JSON
提交HTTP POST请求来创建项目。要提交REST请求,您可能会使用类似Firefox的
RESTClient
等浏览器插件,但似乎您正在SpringMVC中编写自己的客户端。您需要