मान लें कि मेरे पास एक एपीआई है जो उपयोगकर्ताओं को सरल संदेश भेजती है।क्या मेरे पास वेब एपीआई में ऑब्जेक्ट को पढ़ने और अपडेट करने के लिए दो अलग-अलग मॉडल कक्षाएं होनी चाहिए?
POST {
Content: "Message here",
To: "[email protected]"
} api/messages
अब मैं पूरी तरह से भेजे गए संदेशों को पढ़ने के लिए चाहते हैं, लेकिन उपयोगकर्ता के लिए जो इसे भेजने (मैं कुकी में पहचान थी) और समय (स्वचालित रूप से आवंटित) भेजने के साथ: यह भेजने के लिए मैं कुछ इस तरह का प्रयोग करेंगे। फिर यह आसान लगता है:
GET api/messages
और मैं मिल जाएगा:
[{
Content: "Message here",
To: "[email protected]",
From: "user1",
Time: "0001-01-01T00:00:00"
}]
एपीआई नियंत्रक की ओर से मैं दो तरीकों होगा:
public class MessagesController : ApiController
{
[HttpPost, Route("Messages")]
public HttpResponseMessage Post([FromBody] Message message)
{
messageRepository.Create(message);
return Request.CreateResponse(HttpStatusCode.Created, "Message was send.");
}
[HttpGet, Route("Messages")]
public HttpResponseMessage Get()
{
var response = new HttpResponseMessage(HttpStatusCode.OK)
{
Content = new StringContent(JsonConvert.SerializeObject(messageRepository.GetMessages()))
};
response.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json");
return response;
}
}
मेरे समस्या यह है कि वस्तु क्या भेजना मुझे वस्तु से अलग है जो मुझे मिलता है। तो मुझे लगता है कि मैं एक ही संदेश वर्ग का उपयोग नहीं कर सकता। मुझे तब क्यों करना चाहिए:
- क्या मेरे पास उचित तरीके से करने के लिए यहां दो अलग-अलग कक्षाएं होनी चाहिए? (मेरे पास कोड के लिए और अधिक होगा और मुझे नहीं पता कि यह आरईएसटी दृष्टिकोण से सही है)
- क्या मुझे एक वर्ग का उपयोग करना चाहिए, लेकिन अगर उपयोगकर्ता इसे मुझे भेज देगा तो समय और समय गुणों को अनदेखा कर देना चाहिए?
- क्या मुझे अपने उपयोगकर्ता को मुझे समय और समय भेजने के लिए कहा जाना चाहिए लेकिन यहां शून्य भेजना चाहिए?
वस्तुओं की Think DTOs (डाटा ट्रांसफर वस्तुओं) के रूप में तार पर भेजा जा रहा है। आमतौर पर यह सलाह दी जाती है कि आपको केवल तार पर जरूरी भेजना चाहिए। तो आपका जावास्क्रिप्ट क्लाइंट केवल एपीआई की अपेक्षा करता है। यदि समय और समय ऐसा कुछ है जिसे क्लाइंट को प्रदान करने की आवश्यकता नहीं है तो उसे नहीं करना चाहिए। एक सुरक्षा परिप्रेक्ष्य से आप ग्राहक के लिए आवश्यकतानुसार अधिक जानकारी लीक नहीं करना चाहते हैं। – Nkosi