لا يمكن العثور على RestOperations فول

-1

أحاول إعداد Auth الأساسية لمشروع التمهيد الربيعي الخاص بي. لقد فعلت هذا حتى الآن:

CallAPI.java في حزمة com.app.apitool.RESTConsumer

public class CallAPI {

RestTemplate restTemplate = new RestTemplate();

@Autowired
RestTemplateBuilder restTemplateBuilderObj;

@Autowired
BasicAuthSetup basicAuthObj;

@Autowired
RestOperations rest;

String endpointURL = "";

public String pingAPi() {
    HttpEntity<String> request = new HttpEntity<String>(basicAuthObj.getHeaders());

    ResponseEntity<String> response = rest.exchange(endpointURL, HttpMethod.GET, request, String.class);

    System.out.println(response.getBody());
    return response.getBody();
}
}

BasicAuthSetup.java في حزمة com.app.apitool.HTTPAuthSetup

@Component
public class BasicAuthSetup {
private String plainCreds = "[email protected]:password";
private String base64Creds = Base64.getEncoder().encodeToString(plainCreds.getBytes());

@Bean
public HttpHeaders getHeaders() {
    HttpHeaders headers = new HttpHeaders();
    headers.add("Authorization", "Basic" + base64Creds);
    System.out.println("Auth created: "+headers);
    return headers;
}                  
}

عند التشغيل أحصل على الاستثناء التالي:


فشل التطبيق لبدء


وصف:

Field rest in com.appd.apitool.RESTConsumer.CallAPI required a bean of type 'org.springframework.web.client.RestOperations' that could not be found.

Action:

Consider defining a bean of type 'org.springframework.web.client.RestOperations' in your configuration.

لقد بحثت في هذا الخطأ وواجهت مشكلة مماثلة (إن لم يكن نفس) هنا وأنا أتبع الحل المذكور هنا .

السبب في أنني قررت إنشاء مشكلة جديدة هو أنني لم أر أي حل مذكور في المنشور حيث الرابط الأول. أيضًا ، أنا جديد في إطار عمل التمهيد الربيعي.

App.java الرئيسي في حزمة com.app.apitool :

@SpringBootApplication
@RestController
public class App {

private static final Logger log = org.slf4j.LoggerFactory.getLogger(App.class);


@Autowired
private CallAPI callAPIobj;

public static void main(String[] args) {
    SpringApplication.run(App.class, args);
}

@RequestMapping("/api")
public String testAPI() {
    return callAPIobj.pingAPi();
}

}

1 إجابة

1
افضل جواب

حسنًا ، في مشروع Maven ، سيكون إعداد المصادقة الأساسي مكانًا جيدًا لتكوينات الفول:

BasicAuthSetup.java:

package com.app.apitool.config;

import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.web.client.RestTemplate;

import java.util.Base64;

@Configuration
public class BasicAuthSetup {

    private static final String plainCreds = "[email protected]:password";
    private static final  String base64Creds = Base64.getEncoder().encodeToString(plainCreds.getBytes());

    @Bean
    public HttpHeaders getHeaders() {

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

        return headers;
    }

    @Bean
    public RestTemplate restTemplate() {

        RestTemplate restTemplate = new RestTemplate();
        MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
        converter.setObjectMapper(new ObjectMapper());
        restTemplate.getMessageConverters().add(converter);

        return restTemplate;
    }

    @Bean
    public HttpEntity<String> stringHttpEntity() {
        return new HttpEntity<>(getHeaders());
    }
}

بعد ذلك ، قم بإنشاء فئة اختبار تحت / src / main / java في الحزمة المناسبة على النحو التالي:

CallAPITest.java:

package com.app.apitool;

import com.app.apitool.config.BasicAuthSetup;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.web.client.RestOperations;

import static org.junit.Assert.assertNotNull;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = BasicAuthSetup.class)
public class CallAPITest {

    private static final String endpointURL = "";

    @Autowired
    private RestOperations rest;

    @Autowired
    private HttpEntity<String> stringHttpEntity;

    @Test
    public void pingAPi() {

        ResponseEntity<String> response = rest.exchange(endpointURL, HttpMethod.GET, stringHttpEntity, String.class);

        System.out.println(response.getBody());

        final String responseBody = response.getBody();

        assertNotNull(responseBody);
    }
}

وإليك التبعيات التي ستحتاجها في Maven pom.xml لما سبق (قم بتغيير الإصدارات كما تراه مناسبًا):

<properties>
    <jackson.version>2.9.6</jackson.version>
    <spring.version>4.3.5.RELEASE</spring.version>
</properties>

<dependencies>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-core</artifactId>
        <version>${jackson.version}</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>${jackson.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context-support</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-test</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
        <scope>test</scope>
    </dependency>
</dependencies>
:مؤلف
فوق
قائمة طعام