1. Giới thiệu Rewrite
Charles là một trình gỡ lỗi HTTP proxy và ghi lại lưu lượng mạng. Nó cho phép bạn xem, gỡ lỗi và thay đổi các yêu cầu và phản hồi HTTP giữa máy tính và máy chủ web. Với tính năng Rewrite, Charles cung cấp một cách tiện lợi để chỉnh sửa yêu cầu HTTP mà không cần thay đổi mã nguồn gốc.
Vậy Rewrite là gì và tại sao nó hữu ích? Đơn giản, Rewrite cho phép bạn thay đổi nội dung của yêu cầu HTTP mà không ảnh hưởng đến mã nguồn hoặc cấu trúc của ứng dụng web. Điều này rất hữu ích khi bạn muốn thử nghiệm các kịch bản khác nhau, sửa lỗi hoặc điều chỉnh yêu cầu để đảm bảo tính ổn định và chính xác của ứng dụng.
Với Rewrite của Charles, bạn có thể thực hiện nhiều tác vụ, bao gồm:
- Thay đổi phương thức HTTP: Bạn có thể thay đổi phương thức của yêu cầu từ GET sang POST hoặc ngược lại, mở rộng khả năng kiểm thử và sửa lỗi trong ứng dụng web.
- Sửa đổi tham số và giá trị: Bạn có thể thay đổi các tham số và giá trị trong yêu cầu, giúp bạn kiểm tra ứng dụng với các kịch bản và giá trị khác nhau.
- Thay đổi Header: Rewrite cho phép bạn thêm, sửa đổi hoặc xóa các Header trong yêu cầu và phản hồi, giúp bạn điều chỉnh các yêu cầu và phản hồi mạng theo ý muốn.
- Chặn và chuyển hướng yêu cầu: Bạn có thể chặn hoặc chuyển hướng yêu cầu HTTP để kiểm tra và phân tích tác động của chúng đến ứng dụng.
- Quan trọng nhất, Rewrite của Charles giúp bạn tiết kiệm thời gian và nỗ lực trong quá trình chỉnh sửa và thay đổi yêu cầu HTTP. Bạn không cần phải thay đổi mã nguồn hay triển khai lại ứng dụng. Thay vào đó, chỉ cần sử dụng Charles và Rewrite, bạn có thể thực hiện các thay đổi một cách nhanh chóng và dễ dàng.
Với tính năng Rewrite của Charles, bạn sẽ có sự linh hoạt và quyền kiểm soát đáng kể trong việc chỉnh sửa yêu cầu HTTP. Điều này giúp bạn nhanh chóng tìm ra và sửa lỗi, thử nghiệm các tình huống khác nhau và tăng cường tính tin cậycủa ứng dụng web của bạn.
2. Cách sử dụng
Để sử dụng Tool Rewrite bạn cần chọn Tools -> Rewrite...
Sau đó bật Enable Rewrite
Hãy xem thử cách sử dụng qua các ví dụ dưới đây nhé.
2.1. Thay đổi tham số gửi lên
Trên điện thoại bạn bật Safari và load link sau: https://gorest.co.in/public/v2/users?gender=male Link này sẽ trả về danh sách User có giới tính là "male". Đây sẽ là kết quả thu được trên Charles:
Giờ hãy thử dùng Charles sửa tham số male thành female nhé.
Bước 1: Vào Rewrite Settings, chọn thêm mới, rồi điền tên cho rule vừa tạo
Bước 2: Thêm điều kiện chỉ định API cần Rewrite
Ở đây bạn cần phải chỉ định chính xác API mà mình muốn sửa.
Trong ví dụ này thì cần điền
- Host: gorest.co.in
- Path: public/v2/users
Bước 3: Chỉ định thông tin cần thay đổi
Chọn Add ở mục bên dưới
Sau đó điền thông tin cần chỉnh sửa:
Trong ví dụ này ta cần sửa Param nên sẽ chọn
- Type: Modify Query Param
- Match: Điền Name là gender
- Replace: Điền value là female
Sau khi điền xong bạn sẽ được kết quả như hình sau:
Done, hay quay lại điện thoại và reload lại link https://gorest.co.in/public/v2/users?gender=male và cùng xem kết quả:
Như bạn thấy ở trên, dù điện thoại vẫn gửi gender=male nhưng request thực sự gửi lên server đã được thay bằng gender=female. Bạn có thể thấy kết quả hiển thị trên màn hình điện thoại cũng đã thay đổi theo.
2.2. Thay đổi kết quả trả về
Ở đây chúng ta có thể tận dụng chính Rule ở trên nhé. Ở bước chỉ định thông tin cần thay đổi thay vì sửa param chúng ta sẽ đi sửa response:
Chúng ta thử sửa như sau:
- Type: Body
- Where: chọn Response
- Replace: value điền NOT FOUND (phá app 1 tý )
Sau đó chọn OK để lưu và cho điện thoại reload lại cùng xem kết quả nào:
BÙM, cái json lúc nãy đã biến mất, giờ nó thay bằng 1 chữ NOT FOUND
Vậy là bạn đã có thể chỉnh sửa thông tin của API rồi đó. Ngoài 2 ví dụ trên bạn hoàn toàn có thể tự vọc thay đổi các thông tin khác của API nhé.
2.3. Export / Import Rewrite settings
Có thể nhiều bạn sẽ thấy việc setup như trên rất là cực khổ và dễ sai lầm. Để giảm hỗ trợ điều đó Charles cho phép bạn Export / Import setting đề có thể chuyển cài đặt sang máy khác được. Hãy tận dụng nó.
Kết luận
Hãy thử sử dụng công cụ Rewrite của Charles ngay hôm nay và trải nghiệm sự tiện lợi và hiệu quả của nó trong quá trình phát triển và gỡ lỗi ứng dụng cũng như trong kiểm thử API Testing của bạn