Cách gọi API trên Android/iOS khi code server với JHipster

Có thể do các API tạo bằng JHipster để dùng trên môi trường web, nên sinh ra cookie là XSRF-TOKEN. Mỗi khi gửi request lên API thì Header có kèm thêm field X-XSRF-TOKEN, value của field này được lấy từ cookie XSRF-TOKEN. JHipster đã làm sẵn cho ta các bước này. Ngoài ra, API còn sử dụng thêm session JSESSIONID để verify request.

Nhưng khi gọi API trên Android/iOS, ta phải tự làm các bước giống như trên.
  1. Gọi 1 API bất kỳ để sinh ra cookie XSRF-TOKEN. Ta cần lấy tất cả cookie từ response header, lưu lại để dùng cho các request sau.
  2. Khi tạo request mới, thì gán các cookie đã lưu vào request header. Ngoài ra, ta cần tìm cookie XSRF-TOKEN, lấy value gán cho field X-XSRF-TOKEN ở request header.
  3. Khi có response ở bước 2, ta lặp lại bước 1.
Khi lưu và lấy cookie cần lưu theo domain để tránh trùng cookie do API sinh ra với cookie do website khác sinh ra. Ví dụ thực tế trên iOS:
  • JHipster sinh ra session JSESSIONID, ta lưu cookie vào NSHTTPCookieStorage và không theo domain. (1)
  • Mở 1 website trên UIWebView, giả sử website đó cũng sinh ra session JSESSIONID, lúc này webview sẽ tự động lưu cookie vào NSHTTPCookieStorage. (2)
  • Khi tạo API request, ta lấy cookie không theo domain, nghĩa là cả cookie ở (1) và (2), rồi add vào request header. Khi đó API sẽ báo lỗi do JSESSIONID có 2 value.

Nhận xét

Bài đăng phổ biến từ blog này

Xe buýt và rau muống

Học làm thơ cho ngày đặc biệt

Phòng chống dịch "Óc Chó"