طرق جيم لواجهة برمجة التطبيقات لها هياكل استجابة غير متناسقة

لست متأكدًا مما إذا كان هذا يستحق الذكر، لكنني علقت عليه اليوم عند تحليل الاستجابات من طرق create_topic و edit_post الخاصة بالجيم.

تستدعي create_topic الطريقة post. تعيد هذه الطريقة إما response.body أو تثير DiscourseApi::Error:

    def post(path, params = {})
      response = request(:post, path, params)
      case response.status
      when 200, 201, 204
        response.body
      else
        raise DiscourseApi::Error, response.body
      end
    end

تستدعي edit_post الطريقة put. تعيد هذه الطريقة كائن Faraday::Env:

#<struct Faraday::Env method=:put, request_body="post%5Braw%5D=It%27s+a+minor+thing%2C+but+it+comes+up+a+lot.+I%27ll+do+some+tests....

بالنسبة للتطبيقات التي تستخدم الجيم، هذا يعني أنه يجب التعامل مع الاستجابات التي تعيدها طلبات post و put بشكل مختلف. للتعامل مع طلب put، يجب على التطبيق الذي يقوم بالطلب القيام بشيء مثل ما تفعله الجيم API لطلبات post:

  def update_topic_from_note(markdown:, post_id:)
    response = @client.edit_post(post_id, markdown)
    case response.status
    when 200, 201, 204
      response.body
    else
    # ...

ليس نهاية العالم، لكنه كان مفاجئًا. أعرف أنه من الصعب إجراء تغييرات على كود API.

إعجابَين (2)