入力パラメーターを受け入れ、データベースを照会し、結果をJSONに戻すStudyDataController
というコントローラーを持つ実用Web APIアプリケーションを使用しています。 http://localhost:3214/api/StudyDataController?param1=R01¶m2=05-NOV-16
を呼び出すと結果が返されます。同じアプリケーションのWeb APIエンドポイント
しかし、もう1つのAPIを作成する必要があります。入力パラメータが異なり、クエリが異なり、JSONで結果を返します。このため、同じアプリケーションにStudyDatawithDateController
というコントローラを1つ作成しようとしています。私はhttp://localhost:3214/api/StudyDatawithDateController?param1=01-NOV-16¶m2=COMPLETE
のようにエンドポイントを呼び出そう
public class StudyDatawithDateController : ApiController
{ [HttpGet]
public HttpResponseMessage Getdetails(DateTime param1,String param2)
{
List<OracleParameter> p = new List<OracleParameter>();
p.Add(new OracleParameter("param1",OracleDbType.Date,param1, ParameterDirection.Input));
p.Add(new OracleParameter("param2", OracleDbType.Varchar2,param2, ParameterDirection.Input));
string connStr = ConfigurationManager.ConnectionStrings["StudyDataConnection"].ConnectionString;
using (OracleConnection dbconn = new OracleConnection(connStr))
{
DataSet userDataset = new DataSet();
var strQuery = "SELECT * from Studydata_VW where Submit_date> :param1 and Status = :param2 ";
var returnObject = new { data = new OracleDataTableJsonResponse(connStr, strQuery, prms.ToArray()) };
var response = Request.CreateResponse(HttpStatusCode.OK, returnObject, MediaTypeHeaderValue.Parse("application/json"));
ContentDispositionHeaderValue contentDisposition = null;
if (ContentDispositionHeaderValue.TryParse("inline; filename=StudyDatawithDate.json", out contentDisposition))
{
response.Content.Headers.ContentDisposition = contentDisposition;
}
return response;
}}}
webConfig.csは
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
たちは同じWebAPIのアプリケーション上に2つのコントローラを持つことができます下のようなものです。ほとんどの質問/サンプルでは、同じ名前コントローラを使用することについて議論しています。しかし、ここで私は別の名前を持っていると私はこれに対処することができます。
コントローラは必要な数だけ持つことができます。 httpメソッド属性を追加することを忘れましたか?コードを投稿する必要があります。 – Marco
おそらくはい。あなたの疑問を明確にする必要があります。たぶんいくつかのコード –
@マルコ私は質問を編集しました。私がここで逃しているものを教えてください。 – trx