Ketika saya membuat permintaan, saya mendapatkan respons dalam XML, tetapi yang saya butuhkan adalah JSON. Dalam dokumen itu dinyatakan untuk mendapatkan JSON sebagai balasannya: Gunakan HTTP Header Accept: application/json
.
Di mana saya menemukan HTTP Header untuk meletakkan Accept: application/json
di dalamnya?
Dugaan saya adalah itu tidak seharusnya berada di dalam URL-request, yang terlihat seperti:
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
Anda menebak dengan benar, HTTP Header bukan bagian dari URL.
Dan ketika Anda mengetik URL di browser, permintaan akan dikeluarkan dengan header standar. Bagaimanapun REST Apis tidak dimaksudkan untuk dikonsumsi dengan mengetikkan endpoint di address bar browser.
Skenario yang paling umum adalah server Anda mengkonsumsi REST Api pihak ketiga.
Untuk melakukannya, kode sisi server Anda memalsukan permintaan GET (/PUT/POST/DELETE) yang tepat yang mengarah ke endpoint (URL) yang diberikan (bila diperlukan, seperti kasus Anda) beberapa header dan akhirnya (mungkin) mengirim beberapa data (seperti yang biasanya terjadi dalam permintaan POST misalnya).
Kode untuk memalsukan permintaan, mengirimnya dan akhirnya mendapatkan respon kembali tergantung pada bahasa sisi server Anda.
Jika Anda ingin menguji REST Api, Anda dapat menggunakan curl
alat dari baris perintah.
curl
membuat permintaan dan mengeluarkan respon ke stdout (kecuali jika diinstruksikan lain).
Dalam kasus Anda, permintaan pengujian akan dikeluarkan seperti ini:
$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'
Petunjuk H
atau --header
menetapkan header dan nilainya.
Berikut ini adalah situs yang berguna untuk menguji header Anda. Anda dapat melihat header browser Anda dan juga menggunakan cURL untuk memantulkan kembali header apa pun yang Anda kirimkan.
Misalnya, Anda dapat memvalidasi negosiasi konten seperti ini.
Header Accept
ini lebih memilih teks biasa sehingga mengembalikan dalam format itu:-
$ curl -H "Accept: application/json;q=0.9,text/plain" http://gethttp.info/Accept
application/json;q=0.9,text/plain
Sedangkan yang satu ini lebih memilih JSON dan mengembalikan dalam format itu:-
$ curl -H "Accept: application/json,text/*;q=0.99" http://gethttp.info/Accept
{
"Accept": "application/json,text/*;q=0.99"
}
Nah Curl bisa menjadi pilihan yang lebih baik untuk representasi json tetapi dalam hal ini akan sulit untuk memahami struktur json karena berada di baris perintah. jika Anda ingin mendapatkan json Anda di browser, Anda cukup menghapus semua XML Annotations seperti -
@XmlRootElement(name="person")
@XmlAccessorType(XmlAccessType.NONE)
@XmlAttribute
@XmlElement
dari kelas model Anda dan kemudian jalankan url yang sama, yang telah Anda gunakan untuk representasi xml.
Pastikan bahwa Anda memiliki ketergantungan jacson-databind di pom.xml Anda
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.4.1</version>
</dependency>