5 REST API ਗਲਤੀਆਂ ਜਿਨ੍ਹਾਂ ਕਰਕੇ ਮੈਂ ਆਪਣੇ ਯੂਜ਼ਰਸ ਗੁਆ ਦਿੱਤੇ

ਤਿੰਨ ਸਾਲ ਪਹਿਲਾਂ, ਮੈਂ ਆਪਣੀ ਪਹਿਲੀ ਪਬਲਿਕ API ਬਣਾਈ ਸੀ। ਮੈਨੂੰ ਲੱਗਿਆ ਕਿ ਇਹ ਇੱਕ ਵੀਕੈਂਡ ਵਿੱਚ ਪੂਰੀ ਹੋ ਗਈ ਹੈ। ਮੈਂ ਯੂਜ਼ਰਸ ਦੇ ਆਉਣ ਦੀ ਉਡੀਕ ਕਰਨ ਲੱਗਾ।

ਉਹ ਆਏ। ਫਿਰ ਉਹ ਚਲੇ ਗਏ।

ਪ੍ਰੋਡਕਟ ਠੀਕ ਸੀ। API ਦੀ ਵਰਤੋਂ ਕਰਨਾ ਮੁਸ਼ਕਲ ਸੀ। ਮੈਂ ਪੰਜ ਵੱਡੀਆਂ ਗਲਤੀਆਂ ਕੀਤੀਆਂ। ਇੱਥੇ ਦੱਸਿਆ ਗਿਆ ਹੈ ਕਿ ਮੈਂ ਉਹਨਾਂ ਨੂੰ ਕਿਵੇਂ ਸੁਧਾਰਿਆ।

  1. ਗਲਤੀਆਂ ਲਈ 200 OK ਦੀ ਵਰਤੋਂ ਕਰਨਾ ਜਦੋਂ ਚੀਜ਼ਾਂ ਫੇਲ ਹੋ ਰਹੀਆਂ ਸਨ, ਉਦੋਂ ਵੀ ਮੈਂ 200 OK ਸਟੇਟਸ ਭੇਜਦਾ ਸੀ। ਮੈਂ JSON body ਦੇ ਅੰਦਰ ਐਰਰ ਮੈਸੇਜ ਰੱਖਦਾ ਸੀ। ਇਸ ਨਾਲ ਡਿਵੈਲਪਰਾਂ ਨੂੰ ਹਰ ਇੱਕ ਕਾਲ ਲਈ ਕਸਟਮ ਲੌਜਿਕ ਲਿਖਣ ਲਈ ਮਜਬੂਰ ਹੋਣਾ ਪੈਂਦਾ ਸੀ।

ਸੁਧਾਰ: ਸਹੀ HTTP status codes ਦੀ ਵਰਤੋਂ ਕਰੋ।

  • ਗਲਤ ਇਨਪੁਟ ਲਈ 400 ਦੀ ਵਰਤੋਂ ਕਰੋ।
  • ਅਥੈਂਟੀਕੇਸ਼ਨ (auth) ਫੇਲ ਹੋਣ 'ਤੇ 401 ਦੀ ਵਰਤੋਂ ਕਰੋ।
  • ਮਿਸਿੰਗ ਰਿਸੋਰਸਾਂ ਲਈ 404 ਦੀ ਵਰਤੋਂ ਕਰੋ।
  • ਰੇਟ ਲਿਮਿਟਸ ਲਈ 429 ਦੀ ਵਰਤੋਂ ਕਰੋ।
  1. ਵਰਜ਼ਨਿੰਗ (Versioning) ਨੂੰ ਭੁੱਲ ਜਾਣਾ ਮੈਂ ਬਿਨਾਂ ਕਿਸੇ ਚੇਤਾਵਨੀ ਦੇ ਆਪਣੇ ਡੇਟਾ ਫੀਲਡਸ ਬਦਲ ਦਿੱਤੇ। ਇੱਕ ਬਦਲਾਅ ਨੇ ਮੇਰੀਆਂ ਸਾਰੀਆਂ ਇੰਟੀਗ੍ਰੇਸ਼ਨਾਂ ਨੂੰ ਖਰਾਬ ਕਰ ਦਿੱਤਾ।

ਸੁਧਾਰ: ਆਪਣੇ ਰੂਟਸ (routes) ਦੇ ਅੱਗੇ /v1/ ਲਗਾਓ। ਇਹ ਤੁਹਾਡੇ ਕੋਡ ਨੂੰ ਅਪਡੇਟ ਕਰਨ ਵੇਲੇ ਮੌਜੂਦਾ ਕਲਾਇੰਟਸ ਨੂੰ ਖਰਾਬ ਹੋਣ ਤੋਂ ਰੋਕਦਾ ਹੈ। ਆਪਣਾ ਮੌਜੂਦਾ ਵਰਜ਼ਨ ਅਤੇ ਇੱਕ ਪਿਛਲਾ ਵਰਜ਼ਨ ਰੱਖੋ।

  1. ਰੇਟ ਲਿਮਿਟਿੰਗ (Rate Limiting) ਨਾ ਹੋਣਾ ਇੱਕ ਬੱਗੀ (buggy) ਸਕ੍ਰਿਪਟ ਨੇ ਮੇਰੇ ਸਰਚ ਐਂਡਪੁਆਇੰਟ (search endpoint) 'ਤੇ ਪ੍ਰਤੀ ਸੈਕਿੰਡ 200 ਵਾਰ ਹਿੱਟ ਕੀਤਾ। ਇਸ ਨੇ ਮੇਰੇ ਡੇਟਾਬੇਸ ਨੂੰ ਪੂਰੀ ਤਰ੍ਹਾਂ ਵਰਤ ਲਿਆ। ਇਸ ਨੇ ਬਾਕੀ ਸਾਰਿਆਂ ਲਈ ਸਿਸਟਮ ਨੂੰ ਕ੍ਰੈਸ਼ ਕਰ ਦਿੱਤਾ।

ਸੁਧਾਰ: ਰੇਟ ਲਿਮਿਟਿੰਗ ਲਾਗੂ ਕਰੋ। ਟੋਕਨ-ਬੱਕਟ (token-bucket) ਅਪ੍ਰੋਚ ਦੀ ਵਰਤੋਂ ਕਰੋ। Retry-After header ਦੇ ਨਾਲ 429 Too Many Requests ਸਟੇਟਸ ਰਿਟਰਨ ਕਰੋ।

  1. ਅਸੰਗਤ ਐਰਰ ਫਾਰਮੈਟ (Inconsistent Error Formats) ਮੇਰੇ ਐਰਰ ਮੈਸੇਜ ਇਸ ਗੱਲ 'ਤੇ ਨਿਰਭਰ ਕਰਕੇ ਵੱਖ-ਵੱਖ ਦਿਖਾਈ ਦਿੰਦੇ ਸਨ ਕਿ ਐਰਰ ਕਿੱਥੇ ਹੋਇਆ ਸੀ। ਇੱਕ ਐਰਰ ਵਿੱਚ "msg" ਦੀ ਵਰਤੋਂ ਕੀਤੀ ਜਾਂਦੀ ਸੀ ਜਦੋਂ ਕਿ ਦੂਜੇ ਵਿੱਚ "message" ਦੀ। ਡਿਵੈਲਪਰਾਂ ਨੂੰ ਇੱਕ API ਲਈ ਕਈ ਪਾਰਸਰ (parsers) ਲਿਖਣੇ ਪੈਂਦੇ ਸਨ।

ਸੁਧਾਰ: ਇੱਕ ਐਰਰ ਸਟ੍ਰਕਚਰ ਚੁਣੋ ਅਤੇ ਇਸ ਦੀ ਵਰਤੋਂ ਹਰ ਜਗ੍ਹਾ ਕਰੋ। ਹਰ ਐਰਰ ਵਿੱਚ ਇੱਕੋ ਜਿਹੇ ਕੀਜ਼ (keys) ਹੋਣੇ ਚਾਹੀਦੇ ਹਨ।

  1. ਬਹੁਤ ਜ਼ਿਆਦਾ ਡੇਟਾ ਰਿਟਰਨ ਕਰਨਾ ਮੇਰਾ /users ਐਂਡਪੁਆਇੰਟ ਡੇਟਾਬੇਸ ਵਿੱਚ ਮੌਜੂਦ ਹਰ ਯੂਜ਼ਰ ਨੂੰ ਰਿਟਰਨ ਕਰਦਾ ਸੀ। ਜਦੋਂ ਸਾਡੇ ਯੂਜ਼ਰਸ ਦੀ ਗਿਣਤੀ 10,000 ਹੋ ਗਈ, ਤਾਂ ਰਿਸਪਾਂਸ ਦੇ ਸਾਈਜ਼ ਨੇ ਮੋਬਾਈਲ ਐਪਸ ਨੂੰ ਕ੍ਰੈਸ਼ ਕਰ ਦਿੱਤਾ।

ਸੁਧਾਰ: ਕਰਸਰ-ਅਧਾਰਤ ਪੇਜਿਨੇਸ਼ਨ (cursor-based pagination) ਦੀ ਵਰਤੋਂ ਕਰੋ। ਇਹ ਰਿਸਪਾਂਸ ਨੂੰ ਛੋਟਾ ਅਤੇ ਸਥਿਰ ਰੱਖਦਾ ਹੈ। ਇਹ ਆਫਸੈੱਟ-ਅਧਾਰਤ (offset-based) ਪੇਜਿਨੇਸ਼ਨ ਨਾਲੋਂ ਵੱਡੇ ਡੇਟਾਸੈਟਸ ਲਈ ਤੇਜ਼ ਹੈ।

ਨਤੀਜੇ:

  • ਇੰਟੀਗ੍ਰੇਸ਼ਨ ਦਾ ਸਮਾਂ 3 ਦਿਨਾਂ ਤੋਂ ਘਟ ਕੇ 4 ਘੰਟੇ ਰਹਿ ਗਿਆ।
  • ਸਪੋਰਟ ਟਿਕਟਾਂ ਵਿੱਚ 70% ਦੀ ਕਮੀ ਆਈ।
  • ਪੁਰਾਣੇ ਯੂਜ਼ਰਸ ਵਾਪਸ ਆ ਗਏ।

ਤੁਹਾਡੀ API ਹੀ ਤੁਹਾਡਾ ਪ੍ਰੋਡਕਟ ਹੈ। ਇੱਕ ਚੰਗਾ ਫਰੰਟਐਂਡ (frontend) ਇੱਕ ਮਾੜੀ API ਨੂੰ ਨਹੀਂ ਬਚਾ ਸਕਦਾ।

ਤੁਸੀਂ ਹੁਣ ਤੱਕ ਦੀ ਸਭ ਤੋਂ ਮਾੜੀ API ਗਲਤੀ ਕਿਹੜੀ ਦੇਖੀ ਹੈ? ਮੈਨੂੰ ਕੁਮੈਂਟਸ ਵਿੱਚ ਦੱਸੋ।

ਸਰੋਤ: https://dev.to/sirmax/5-rest-api-mistakes-that-cost-me-users-and-how-to-fix-them-57gi