هل هناك فرق في ما يتم إرساله بين HttpResponseMessage وTask<IHttpActionResult> باستخدام WebAPI 2؟

StackOverflow https://stackoverflow.com//questions/23045125

سؤال

إليك بعض التعليمات البرمجية الجديدة التي أنشأتها للتو باستخدام السقالات:

    [ResponseType(typeof(Exam))]
    public async Task<IHttpActionResult> GetExam(int id)
    {
        ...
        return Ok(exam);
    }

في السابق كان لدي كود مثل هذا:

    public HttpResponseMessage GetExam(int id)
    {
        ...
        return Request.CreateResponse(HttpStatusCode.OK, exam);
    }

يمكن للشخص التعليق على ما وراء التغييرات.لماذا الاقتراح الآن هو استخدام أنواع الإرجاع "Ok" وهل يختلف هذا عن ترميز HttpResponseMessage؟لم أجد حتى الآن أي وثائق حول هذا الأمر وأتساءل على وجه الخصوص عما يفعله ResponseType؟أي نصيحة سيكون موضع تقدير كبير.

هل كانت مفيدة؟

المحلول

في الإصدار 1 من Web API، يمكنك إما إرجاع HTTP 200 عن طريق إرجاع قيمة، أو سيتعين عليك إنشاء HttpResponseMessage لإرجاع أي شيء آخر.

في واجهة برمجة تطبيقات الويب 2، IHttpActionResult وما يرتبط بها Ok(), BadRequest(), Created(), ، إلخ ApiController تمت إضافة طرق لتبسيط العديد من المواقف التي تريد فيها الاستجابة برمز حالة مختلف.خلف الكواليس، مكالمات Web API IHttpActionResult.ExecuteAsync() لتحويله إلى HttpResponseMessage.

لمزيد من التفاصيل، راجع: نتائج الإجراء في Web API 2

أما بالنسبة لل ResponseType السمة، فهي موجودة بشكل أساسي لتحديد نوع الإرجاع في الإجراءات التي يتم إرجاعها IHttpActionResult و HttpResponseMessage حتى يتمكن Web API من إنشاء وثائق المساعدة.في السابق، كان يجب أن يتم ذلك عبر config.SetActualResponseType().

المزيد من التفاصيل: سمة نوع الاستجابة

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top