Просмотр исходного кода

fix(http api): correct return status code for /api/datasources/:id so it eturns 404 when not found, fixes #3217

Torkel Ödegaard 10 лет назад
Родитель
Сommit
32f9f8fcce
2 измененных файлов с 7 добавлено и 5 удалено
  1. 1 1
      pkg/api/api.go
  2. 6 4
      pkg/api/datasources.go

+ 1 - 1
pkg/api/api.go

@@ -148,7 +148,7 @@ func Register(r *macaron.Macaron) {
 			r.Post("/", quota("data_source"), bind(m.AddDataSourceCommand{}), AddDataSource)
 			r.Post("/", quota("data_source"), bind(m.AddDataSourceCommand{}), AddDataSource)
 			r.Put("/:id", bind(m.UpdateDataSourceCommand{}), UpdateDataSource)
 			r.Put("/:id", bind(m.UpdateDataSourceCommand{}), UpdateDataSource)
 			r.Delete("/:id", DeleteDataSource)
 			r.Delete("/:id", DeleteDataSource)
-			r.Get("/:id", GetDataSourceById)
+			r.Get("/:id", wrap(GetDataSourceById))
 			r.Get("/plugins", GetDataSourcePlugins)
 			r.Get("/plugins", GetDataSourcePlugins)
 		}, regOrgAdmin)
 		}, regOrgAdmin)
 
 

+ 6 - 4
pkg/api/datasources.go

@@ -37,20 +37,22 @@ func GetDataSources(c *middleware.Context) {
 	c.JSON(200, result)
 	c.JSON(200, result)
 }
 }
 
 
-func GetDataSourceById(c *middleware.Context) {
+func GetDataSourceById(c *middleware.Context) Response {
 	query := m.GetDataSourceByIdQuery{
 	query := m.GetDataSourceByIdQuery{
 		Id:    c.ParamsInt64(":id"),
 		Id:    c.ParamsInt64(":id"),
 		OrgId: c.OrgId,
 		OrgId: c.OrgId,
 	}
 	}
 
 
 	if err := bus.Dispatch(&query); err != nil {
 	if err := bus.Dispatch(&query); err != nil {
-		c.JsonApiErr(500, "Failed to query datasources", err)
-		return
+		if err == m.ErrDataSourceNotFound {
+			return ApiError(404, "Data source not found", nil)
+		}
+		return ApiError(500, "Failed to query datasources", err)
 	}
 	}
 
 
 	ds := query.Result
 	ds := query.Result
 
 
-	c.JSON(200, &dtos.DataSource{
+	return Json(200, &dtos.DataSource{
 		Id:                ds.Id,
 		Id:                ds.Id,
 		OrgId:             ds.OrgId,
 		OrgId:             ds.OrgId,
 		Name:              ds.Name,
 		Name:              ds.Name,