簡體   English   中英

Rest API使用Json參數獲取請求

[英]Rest API Get request with Json parameter

我有一個任務,我需要使用復雜的類型參數來請求Web api GET請求,我想我們無法做到這一點,因為GET請求希望所有內容都可以通過URL共享。

誰能幫助我實現這一目標。 通過C#將Web API GET請求與JSON數據一起使用。

消費者控制台:

class Program
    {
        static void Main(string[] args)
        {
            try
            {
                // Need to pass this through GET Request
                var employee = new Employee() { EmployeeId = 1, EmployeeName = "Test", Designation = "Developer", Salary = 100 };
                var jsonParam = JsonConvert.SerializeObject(employee);
                //


                var request = (HttpWebRequest)WebRequest.Create("http://localhost:52237/Values/GetEmp");                

                var encoding = new UTF8Encoding();
                var bytes = encoding.GetBytes(jsonParam);

                request.Method = "GET";
                request.ContentLength = bytes.Length;
                request.ContentType = "application/json";

                using (var writeStream = request.GetRequestStream())
                {
                    writeStream.Write(bytes, 0, bytes.Length);
                }

                using (var response = (HttpWebResponse)request.GetResponse())
                {
                    var responseValue = string.Empty;

                    if (response.StatusCode == HttpStatusCode.OK)
                    {
                        // grab the response
                        using (var responseStream = response.GetResponseStream())
                        {
                            if (responseStream != null)
                                using (var reader = new StreamReader(responseStream))
                                {
                                    responseValue = reader.ReadToEnd();
                                }
                        }
                    }
                }              
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
    }
    public class Employee
    {
        public int EmployeeId { get; set; }
        public string EmployeeName { get; set; }
        public int Salary { get; set; }
        public string Designation { get; set; }
    }

Web API:

public class ValuesController : ApiController
    {        
        [HttpGet]
        [Route("api/GetEmp")]
        public Employee GetEmp([FromUri]Employee employee)
        {
            // Getting employee object from client

            // Yet to implement

            if (employee != null)
            {
                employee.Designation = "Engineer";
            }
            return employee;
        }
    }

    public class Employee
    {
        public int EmployeeId { get; set; }
        public string EmployeeName { get; set; }
        public int Salary { get; set; }
        public string Designation { get; set; }
    }

提前致謝。

我認為在HTTP 1.1版本之后,您也可以在GET請求中以正文形式發送數據。 因此可以使用[FromBody]代替[FromUri]。

    [HttpGet]
    [Route("api/GetEmp")]
    public Employee GetEmp([FromBody]Employee employee)
    {
        // Getting employee object from client

        // Yet to implement

        if (employee != null)
        {
            employee.Designation = "Engineer";
        }
        return employee;
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM