Tôi đang sử dụng Spring Cloud và Zuul proxy làm cổng vào dịch vụ RESTful của mình.Khởi động mùa xuân + Đám mây | Zuul Proxy | Lỗi 404
Cổng ứng dụng (Spring Boot ứng dụng web chạy trên cổng 8080) mã có liên quan: -
lớp chính: -
@SpringBootApplication
@EnableZuulProxy
public class WebfrontApplication extends WebMvcConfigurerAdapter {
/**
* @param args
*/
public static void main(String[] args) {
SpringApplication.run(WebfrontApplication.class, args);
}
}
Zuul Mappings: -
zuul:
routes:
customer:
path: /customer/**
url: http://localhost:9000/
Khi khởi động ứng dụng UI Gateway ở trên, tôi có thể thấy trong nhật ký của mình ánh xạ cho prox ies được đăng ký: -
o.s.c.n.zuul.web.ZuulHandlerMapping : Mapped URL path [/customer/**] onto handler of type [class org.springframework.cloud.netflix.zuul.web.ZuulController]
Các dịch vụ REST (A khởi động mùa xuân ứng dụng web chạy trên cổng 9000) mã có liên quan: -
@RestController
@RequestMapping(value = "/customer")
public class CustomerController {
@Autowired
private CustomerService customerService;
/**
* Get List of All customers.
*
* @return
*/
@RequestMapping(value = "/list", method = RequestMethod.GET)
public List<Customer> list(Principal principal) {
return customerService.list();
}
}
Sử dụng một khách hàng còn lại (Postman trong trường hợp của tôi) Tôi có thể để nhận phản hồi từ điểm cuối ở trên thành công (sau khi chăm sóc mã thông báo xác thực).
Tôi đang sử dụng AngularJS trong ứng dụng giao diện người dùng để lấy dữ liệu từ điểm cuối REST.
mã có liên quan: -
angular.module('customerModule').factory('customerService',function($http) {
return {
customerList : function(){
// PROBLEM !!!!!
// THIS CALL GIVES A 404 ERROR
return $http.get('/customer/list');
}
};
});
Cuộc gọi trên được đưa ra sau một lỗi 404: - Đây là những gì debugger Chrome của tôi cho thấy: - Headers
Remote Address:127.0.0.1:8080
Request URL:http://localhost:8080/customer/list
Request Method:GET
Status Code:404 Not Found
Yêu cầu: -
Accept:application/json, text/plain, */*
Accept-Encoding:gzip, deflate, sdch
Accept-Language:en-US,en;q=0.8,hi;q=0.6,ms;q=0.4
Cache-Control:no-cache
Connection:keep-alive
Cookie:SESSION=2e1ac330-fe41-4ff4-8efb-81eaec12c8d1
Host:localhost:8080
Pragma:no-cache
Referer:http://localhost:8080/
User-Agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.89 Safari/537.36
X-Auth-Token:2e1ac330-fe41-4ff4-8efb-81eaec12c8d1
Tiêu đề phản hồi: -
Cache-Control:no-cache, no-store, max-age=0, must-revalidate
Content-Type:application/json; charset=UTF-8
Date:Fri, 20 Mar 2015 04:00:36 GMT
Date:Fri, 20 Mar 2015 04:00:36 GMT
Expires:0
Pragma:no-cache
Pragma:no-cache
Server:Jetty(9.2.9.v20150224)
Transfer-Encoding:chunked
X-Application-Context:bootstrap
X-Content-Type-Options:nosniff
X-Content-Type-Options:nosniff
X-Frame-Options:DENY
X-Frame-Options:DENY
X-XSS-Protection:1; mode=block
X-XSS-Protection:1; mode=block
Có gì sai ở đây? Ánh xạ không chính xác hay tôi thiếu cái gì khác?
SOLVED
Theo câu trả lời được chấp nhận, thay đổi ánh xạ Zuul làm việc khi thay đổi: -
zuul:
routes:
resource:
path: /customer/**
url: http://localhost:9000/
stripPrefix: false
tôi sau blog của Dave Syer của từ đây: http://spring.io/blog/2015/01/12/spring-and-angular-js-an-an-đơn-trang-ứng dụng –