0

我有一个 emberjs 应用程序,它使用 ASP .NET RESTfull Web API 从服务器获取数据。我使用 ember RESTAdapter 连接到 web api,这非常适合以下场景:

GET    products       //findAll
GET    products/{id}  //find
POST   products       //createRecord
PUT    products/{id}  //updateRecord
DELETE products/{id} //deleteRecord

但是如果我遇到这种情况怎么办:

GET    products?categoryId=1

如何通过 Ember 调用此方法并处理结果?

我的 ASP.NET REST API 控制器

public class ProductsController : ApiController
    {
         private IOrderCaptureRepository _orderCapture;
         public ProductsController()
        {
            _orderCapture = new OrderCaptureRepository();
        }

        public IHttpActionResult Get()
        {
            try
            {
                var result = Wrapper.WrapToEmber(_orderCapture.GetProducts());
                return Ok(result);
            }
            catch (Exception e)
            {
                return InternalServerError(e);
            }
        }

        public IHttpActionResult Get(int id)
        {
            try
            {
                var result = Wrapper.WrapToEmber(_orderCapture.GetProduct(id));
                if (result == null)
                {
                    return NotFound();
                }
                return Ok(result);
            }
            catch (Exception e)
            {
                return InternalServerError();
            }
        }

        [HttpGet]
        public IHttpActionResult GetProductsInCategory(int categoryId)
        {
            try
            {
                var result = Wrapper.WrapToEmber(_orderCapture.GetProducts(categoryId));
                return Ok(result);
            }
            catch (Exception e)
            {
                return InternalServerError();
            }
        }
    }

我的适配器:

import DS from 'ember-data';

var ApplicationAdapter = DS.RESTAdapter.extend({
});

ApplicationAdapter.reopen({
    host: 'http://localhost:52703/',
    namespace: 'api/'
});


export default ApplicationAdapter;
4

1 回答 1

0

发布此问题后,我在 ember 提供的 RESTAdapter 上发现了findQuery方法。这解决了我的问题!

于 2014-06-27T10:38:54.477 回答