ป้องกันไม่ให้พารามิเตอร์การสืบค้นชุดติดตั้งเพิ่มเติมถูกหลีก

จุดสิ้นสุดที่ฉันต้องค้นหายอมรับคีย์ที่เรียกว่า exams ซึ่งเป็นอาร์เรย์ดังนั้น URL ที่ไม่ได้ใช้งานที่จะค้นหาจะเป็น

https://example.com/api/v1/search?exams[]=6&exams[]=7&page=0

จนถึงตอนนี้นี่คือฟังก์ชันอินเทอร์เฟซสำหรับติดตั้งเพิ่มเติมของฉันที่เรียกมันว่า

    @GET("search")
    Observable<CustomResponse> search(@Query("search") String query,
                                      @Query("class") int class_id,
                                      @Query("exams[]") ArrayList<Integer> examIds,
                                      @Query("page") int page);

การเรียกครั้งสุดท้ายที่ได้รับการดำเนินการจะกลายเป็น

https://example.com/api/v1/search?exams%5B%5D=6&exams%5B%5D=7&page=0

ฉันจะป้องกันไม่ให้สิ่งนี้เกิดขึ้นและส่งอาร์เรย์เป็นพารามิเตอร์การสืบค้นได้อย่างไร นี่คือคำขอ GET ไม่ใช่ POST


person Jude Fernandes    schedule 21.02.2019    source แหล่งที่มา
comment
มันไม่ได้หลบหนี มันถูกเข้ารหัส คุณทดสอบแล้วหรือยัง? มันควรจะทำงานเหมือนเดิม   -  person Tim    schedule 21.02.2019
comment
@TimCastelijns ใช่แล้ว ฉันแย่เลย ฉันหมายถึงเข้ารหัสแล้ว และด้วยเหตุผลบางอย่างที่ฉันได้รับ URL ที่เข้ารหัส ฉันคาดหวังว่ามันจะใช้งานได้เช่นกันเพราะทุกไซต์ออนไลน์บอกว่ามันควรจะทำงานเหมือนเดิม   -  person Jude Fernandes    schedule 21.02.2019
comment
@Ranjan คำขอที่ฉันทำคือ GET ไม่ใช่ POST   -  person Jude Fernandes    schedule 21.02.2019


คำตอบ (1)


ลองสิ่งนี้ -

@GET("search")
Observable<CustomResponse> search(@Query("search") String query,
                                  @Query("class") int class_id,
                                  @Query(value = "exams[]", encoded = true) ArrayList<Integer> examIds,
                                  @Query("page") int page);
person Ranjan    schedule 21.02.2019
comment
มันควรจะทำงาน จากเอกสารประกอบ ›ชื่อและค่าพารามิเตอร์จะถูกเข้ารหัส URL ตามค่าเริ่มต้น ระบุ {@link #encoded() encoded=true} * เพื่อเปลี่ยนลักษณะการทำงานนี้ บางทีคุณอาจต้องใส่ encoded true สำหรับข้อความค้นหาทั้งหมด - person Ranjan; 21.02.2019
comment
ฉันมีตัวอย่างการทำงานของสิ่งนี้ แต่ก็มีพารามิเตอร์การสืบค้นเดียวด้วย - person Ranjan; 21.02.2019