2017-04-04 30 views
8

Khi tôi đưa ra yêu cầu, tôi lấy lại XML. Nhưng cái tôi cần là một JSON. Trong tài liệu, nó được khai báo để lấy lại JSON: Sử dụng tiêu đề HTTP Accept: application/json HTTP.REST API - Sử dụng tiêu đề HTTP "Accept: application/json" HTTP

Nhưng ở đâu trong tên của vị thần, tôi tìm tiêu đề HTTP để đặt Accept: application/json bên trong.

tôi đoán là nó không phải là giả sử để được bên trong URL yêu cầu, trông giống như:

http://localhost:8080/otp/routers/default/plan?fromPlace=52.5895,13.2836&toPlace=52.5461,13.3588&date=2017/04/04&time=12:00:00 
+2

Bạn gửi yêu cầu bằng cách nào? –

+0

Điều này có thể giúp bạn hiểu: http://stackoverflow.com/documentation/rest/1664/getting-started-with-rest/20145/rest-over-http – sp00m

Trả lời

17

Bạn đoán đúng, HTTP Headers không nằm trong URL.

Và khi bạn nhập URL trong trình duyệt, yêu cầu sẽ được phát hành với tiêu đề chuẩn. Dù sao REST Apis không có nghĩa là được tiêu thụ bằng cách gõ điểm cuối trong thanh địa chỉ của trình duyệt.

Kịch bản phổ biến nhất là máy chủ của bạn tiêu thụ REST Api của bên thứ ba.

Để làm như vậy bạn server-side code rèn một GET đúng (/ PUT/POST/DELETE) yêu cầu trỏ đến một thiết bị đầu cuối cho trước (URL) cài đặt (khi cần thiết, giống như trường hợp của bạn) một số tiêu đề và cuối cùng (có thể) gửi một số dữ liệu (như thường xảy ra trong yêu cầu POST chẳng hạn).

Mã để giả mạo yêu cầu, gửi và cuối cùng nhận được phản hồi phụ thuộc vào ngôn ngữ phía máy chủ của bạn.

Nếu bạn muốn kiểm tra một REST Api bạn có thể sử dụng công cụ curl từ dòng lệnh.

curl thực hiện yêu cầu và xuất phản hồi cho chế độ xuất chuẩn (trừ khi được hướng dẫn khác).

Trong trường hợp của bạn yêu cầu kiểm tra sẽ được cấp như thế này:

$curl -H "Accept: application/json" 'http://localhost:8080/otp/routers/default/plan?fromPlace=52.5895,13.2836&toPlace=52.5461,13.3588&date=2017/04/04&time=12:00:00' 

Các H hoặc --header chỉ đặt một tiêu đề và giá trị của nó.

Các vấn đề liên quan