2013-05-04 3 views
0

Я звоню службу REST с помощью AJAX, я следующий пример вызоваКак я могу использовать несколько обработчиков в одном методе ProcessRequest?

myipaddress/RestWebService/сотрудника? ID = 1" ,

Код C# службы показан ниже. Мой обработчик, как выше " сотрудник ", я хотел бы добавить больше обработчиков и задавался вопросом, могу ли я сделать это из того же метода ProcessRequest, я бы хотел разобрать обработчик, а затем запросить с параметрами, как требуется,

, так что я хотел бы иметь например,

myipaddress/RestWebService/company? id = 1 ",

Большое спасибо

void IHttpHandler.ProcessRequest(HttpContext context) 
{ 
    try 
    {     
     string url = Convert.ToString(context.Request.Url); 
     connString = @""; 
     dal = new DAL.DAL(connString); 
     errHandler = new ErrorHandler.ErrorHandler(); 

     //Handling CRUD 
     switch (context.Request.HttpMethod) 
     { 
      case "GET": 
       //Perform READ Operation     
       READ(context); 
       break; 
      case "POST": 
       //Perform CREATE Operation 
       CREATE(context); 
       break; 
      case "PUT": 
       //Perform UPDATE Operation 
       UPDATE(context); 
       break; 
      case "DELETE": 
       //Perform DELETE Operation 
       DELETE(context); 
       break; 
      default: 
       break; 
     } 
    } 
    catch (Exception ex) 
    { 
     errHandler.ErrorMessage = ex.Message.ToString(); 
     context.Response.Write(errHandler.ErrorMessage);     
    } 
} 


/// <param name="context"></param> 
private void READ(HttpContext context) 
{ 
    try 
    { 
     int employeeCode = Convert.ToInt16(context.Request["id"]); 

     //HTTP Request Type - GET" 
     //Performing Operation - READ" 
     //Data sent via query string 
     //POST - Data sent as name value pair and resides in the <form section> of the browser 
     emp = dal.GetEmployee(employeeCode); 
     if (emp==null)    
      context.Response.Write(employeeCode + "No Employee Found"); 

     string serializedEmployee = Serialize(emp); 

     context.Response.ContentType = "text/xml"; 

     //string serializedEmployee = JsonSerialize(emp); 
     //context.Response.ContentType = "text/json"; 
     WriteResponse(serializedEmployee); 
    } 
    catch (Exception ex) 
    { 
     WriteResponse("Error in READ"); 
     errHandler.ErrorMessage = dal.GetException(); 
     errHandler.ErrorMessage = ex.Message.ToString();     
    }    
} 
+0

для обычных вызовов для отдыха вам не нужно предоставлять HttpHandlers, вместо этого вы можете иметь API-контроллер в ASP.Net MVC4, а затем использовать «Redirect» в этом контроллере. – Saravanan

+0

Привет, я реализовал MVC api, работает как удовольствие. благодаря – Simon

ответ

0

Я не уверен, о деле ввода в C#, но, как правило, в Java REST каркасов вы можете иметь различное значение пути Params, обработанную методом. Вот соглашение об остальном для него

myipaddress/RestWebService/{entity}?id=1 
This at run time can cater to both type of request 

myipaddress/RestWebService/employee?id=1 
myipaddress/RestWebService/company?id=1 

Я надеюсь, что ваша инфраструктура C# должна предоставлять эту функцию, поскольку это соглашение REST.