我已经创建了接受在查询Oracle数据库使用,并返回结果以JSON格式四个输入参数的网页API处理错误。现在我试图处理URI中的任何异常,如果有任何输入参数丢失或格式错误。像JSON "error":"ROOM cannot be Empty or NULL"
返回,如果它上面没有返回样室不能为空或NULL如何得到像"error":"ROOM cannot be Empty or NULL"
在URI房间是空喜欢ROOM=&DOB_GT=01-SEP-05&DOB_LT=30-DEC-06&STATUS_TYPE=CMPLT
返回JSON时的Web API
public class TGSDataController : ApiController
{
[HttpGet]
public HttpResponseMessage Getdetails(string ROOM, DateTime DOB_GT, DateTime DOB_LT, string STATUS_TYPE)
{
if (string.IsNullOrEmpty(ROOM))
{
var resp = new HttpResponseMessage()
{
Content = new StringContent("ROOM cannot be Empty or NULL")
};
resp.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
return resp;
}
List<OracleParameter> prms = new List<OracleParameter>();
List<string> selectionStrings = new List<string>();
prms.Add(new OracleParameter("ROOM", OracleDbType.Varchar2, ROOM, ParameterDirection.Input));
prms.Add(new OracleParameter("DOB_GT", OracleDbType.Date, DOB_GT, ParameterDirection.Input));
prms.Add(new OracleParameter("DOB_LT", OracleDbType.Date, DOB_LT, ParameterDirection.Input));
prms.Add(new OracleParameter("STATUS_TYPE", OracleDbType.Varchar2, STATUS_TYPE, ParameterDirection.Input));
string connStr = ConfigurationManager.ConnectionStrings["TGSDataBaseConnection"].ConnectionString;
using (OracleConnection dbconn = new OracleConnection(connStr))
{
DataSet userDataset = new DataSet();
var strQuery = "SELECT * from LIMS_SAMPLE_RESULTS_VW where ROOM = :ROOM and DOB > :DOB_GT and DOB < :DOB_LT and STATUS_TYPE= :STATUS_TYPE ";
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=TGSData.json", out contentDisposition))
{
response.Content.Headers.ContentDisposition = contentDisposition;
}
return response;
}
我的代码。还有什么办法来处理URLI中的错误并返回JSON响应:"error":"Poorly Formed URI"
感谢Cam Bruce。我尝试添加try catch块,但我试图给出一个无效的输入参数,比如'api/TGSData?ROOM = KOMP2&DOB_GT = 01--05&DOB_LT = 30-DEC-06&STATUS_TYPE = CMPLT'值DOB_GT错误(01--05)它在HTTP 400错误请求中抛出错误找不到Web页面,但它不会在JSON响应中返回那些异常细节 – trx
ahh,请参阅如果你手动检查你的参数,你可以很容易地建立一个对象,以返回你需要的东西 –
Cam Bruce,有没有办法检查DateTime是否有有效的输入 – trx