Tôi có hai ứng dụng khởi động mùa xuân trong đó một trong số chúng hoạt động như Cổng API (như được thảo luận tại đây Spring Example). Cái kia được nối vào cái đầu tiên là phơi bày một dịch vụ hồ sơ bằng cách sử dụng phần còn lại của dữ liệu vào mùa xuân (spring-data-neo4j-rest).Đường dẫn HATEOAS không hợp lệ khi sử dụng Cổng API trong ứng dụng Khởi động Xuân
Ứng dụng đầu tiên được bắt đầu trên cổng 8080 và đang sử dụng zuul yêu cầu đường đến thứ hai như sau:
zuul:
routes:
profiles:
path: /profiles/**
url: http://localhost:8083/profiles/
này tất cả hoạt động tốt và yêu cầu http://localhost:8080/profiles đang được phục vụ từ các ứng dụng thứ hai. Vấn đề là mặc dù các liên kết HATEOAS trong phản hồi là không chính xác. Câu trả lời từ gọi là dịch vụ thứ hai là chính xác:
{
"_links": {
"self": {
"href": "http://localhost:8083/profiles{?page,size,sort}",
"templated": true
},
"search": {
"href": "http://localhost:8083/profiles/search"
}
},
"_embedded": {
"profiles": [
{
"name": "Andrew Rutter",
"_links": {
"self": {
"href": "http://localhost:8083/profiles/0"
}
}
},
{
"name": "Andrew Rutter",
"_links": {
"self": {
"href": "http://localhost:8083/profiles/1"
}
}
}
]
},
"page": {
"size": 20,
"totalElements": 2,
"totalPages": 1,
"number": 0
}
}
Nhưng khi điều này trở lại với API của tôi Gateway, các liên kết đang được viết lại để
{
"name": "Andrew Rutter",
"_links": {
"self": {
"href": "http://localhost:8080/profiles/profiles/0"
}
}
}
Đó là bí danh con đường cửa ngõ cộng với dịch vụ thực tế cơ sở Uri. Tôi có thiếu một tùy chọn zuul để vô hiệu hóa hành vi đó và chỉ cần để lại uri hateoas tại chỗ với một điều chỉnh máy chủ. Hoặc là có một cách để dịch vụ của tôi phía sau cổng được kết nối đến/thay vì sau đó là điểm cuối tài nguyên mặc định của/profiles (trong trường hợp này) sẽ tránh được đường dẫn không mong muốn được thêm vào.
Cảm ơn!
Cảm ơn đề xuất. Kết quả của việc thiết lập thành false là các liên kết được trả về là các liên kết trực tiếp đến dịch vụ phụ trợ không mong muốn. Tôi nhận thấy rằng phiên bản spring-hateoas được đưa vào là 0.16.0 nên đã cố gắng thay đổi sự phụ thuộc đó cho đến hiện tại nhưng không có niềm vui. Tôi đã thay đổi đường dẫn api thành/xyz trong cổng để làm cho mọi thứ rõ ràng hơn. Khi tôi yêu cầu một hồ sơ cụ thể như/xzy/0, điều này được gửi nội bộ đến/profiles/0 nhưng liên kết hateoas trong phản hồi kết thúc bằng/xyz/profiles/0/profiles/0 –